我的目标是从 JS 函数内部调用 JSF 托管 bean 方法。
这是功能:
var fbLogin = function() {
FB.login(
function(response) {
if (response.authResponse) {
var access_token = FB.getAuthResponse()['accessToken'];
console.log(access_token);
//document.getElementById("hiddenFbForm:hiddenFbToken").value = access_token;
//document.getElementById("hiddenFbForm:hiddenFbLoginSubmit").onclick();
} else {
console.log("ERROR");
}
},
{scope:'email'}
);
};
我的想法是有一个隐藏的 JSF ajax 表单,填充一个隐藏字段并触发点击提交命令链接:
<h:form id="hiddenFbForm">
<h:inputHidden id="hiddenFbToken" value="#{loginController.fbToken}" />
<h:commandLink id="hiddenFbLoginSubmit" actionListener="#{loginController.printFbInfo()}" />
</h:form>
但是,这不起作用。页面重新加载,我的printFbInfo服务器端方法永远无法到达。
对于从 JS 函数调用 JSF 服务器端 bean,您有更好的想法吗(以编程方式,我不希望我的用户单击按钮)。
另一件事......我希望调用是 AJAX,而不是重新加载页面。