gpt4 book ai didi

jsf - 警告 : This page calls for XML namespace http://www. facebook.com/2008/fbml 使用前缀 fb 声明,但该命名空间不存在标记库

转载 作者:行者123 更新时间:2023-12-01 16:58:42 25 4
gpt4 key购买 nike

我正在开发一个使用 Javascript 的 FB 登录应用程序和网站。我在 html 中尝试过,效果很好。当我转换为 JSF 时出现错误。

这是我的 fbLogin.xhtml 代码。

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:fb="http://www.facebook.com/2008/fbml">
<h:head>
<title>FB Login</title>
<link rel="stylesheet" type="text/css" href="./xmlhttp/css/rime/rime.css"/>
</h:head>
<h:body styleClass="ice-skin-rime">

<fb:login-button scope="email"></fb:login-button>
<script>
window.fbAsyncInit = function() {
FB.init({
appId : '<APP_ID>',
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true // parse XFBML
});

// Additional initialization code here

showMe = function(response) {
if (response.status !== 'connected') {
div.innerHTML = '<em>Not Connected</em>';
} else {
FB.api('/me', function(response) {
var i=0;
for (var key in response) {

i++;

switch(i){
case 1: document.getElementById("formId:id").value=response[key]; break;
case 2: document.getElementById("formId:name").value=response[key]; break;
case 5: document.getElementById("formId:link").value=response[key]; break;
case 6: document.getElementById("formId:userName").value=response[key]; break;
case 19: document.getElementById("formId:email").value=response[key]; break;
}

}

});
}
};
FB.getLoginStatus(function(response) {
showMe(response);
FB.Event.subscribe('auth.authResponseChange', showMe);
});
};

// Load the SDK Asynchronously
(function(d){
var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
if (d.getElementById(id)) {return;}
js = d.createElement('script'); js.id = id; js.async = true;
js.src = "//connect.facebook.net/en_US/all.js";
ref.parentNode.insertBefore(js, ref);
}(document));
</script>

<h:form id="formId">
<table>
<tr><td><a>ID : <h:inputText id="id" value="#{fbLogin.id}" /> </a></td></tr>
<tr><td><a>Name : <h:inputText id="name" value="#{fbLogin.name}" /> </a></td></tr>
<tr><td><a>Link : <h:inputText id="link" value="#{fbLogin.link}" /> </a></td></tr>
<tr><td><a>User Name : <h:inputText id="userName" value="#{fbLogin.userName}" /> </a></td></tr>
<tr><td><a>E-Mail : <h:inputText id="email" value="#{fbLogin.email}" /> </a></td></tr>
<tr><td><h:commandButton value="Register" action="#{fbLogin.Display}" /></td></tr>
</table>
</h:form>
</h:body>
</html>

使用 JSF 编写代码的原因是,我需要将用户信息获取到我的 backBean 中以存储到数据库中。

当我尝试运行此应用程序时,我在浏览器中收到警告:

警告:此页面调用以 fb 前缀声明的 XML 命名空间 http://www.facebook.com/2008/fbml,但该命名空间不存在标记库。

我的代码有什么错误?

最佳答案

当您在 web 应用程序的 web.xml 中将 javax.faces.PROJECT_STAGE 设置为 Development 并且 Facelets 遇到 XML 命名空间时,您将会得到此信息它无法解析为 JSF 兼容的标记库。显示此警告只是为了通知(新手)开发人员 XML 命名空间中可能存在不可预见的拼写错误或标签库配置中的错误。

但是,在这种特殊情况下,所涉及的 XML 命名空间 actually引用外部 Facebook JavaScript API,而不是 JSF 标签库,例如 PrimeFaces、OmniFaces 等。您的代码完全没问题。

您可以忽略此警告。当您将 JSF 项目阶段设置回 Production 或删除整个上下文参数(它已默认为 Production)时,不会出现此警告。

关于jsf - 警告 : This page calls for XML namespace http://www. facebook.com/2008/fbml 使用前缀 fb 声明,但该命名空间不存在标记库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20263746/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com