我有这个:
<h:link value="Sign In" outcome="login.jsp" />
当点击链接时,它导航到login.jsp。没问题。
我还想在bean中调用一个方法来单击,所以我尝试了这个:
<h:link value="Sign In" outcome="login.jsp" />
<f:ajax event="click" listener="#{loginHandler.dismissSignUpDialog}" />
</h:link>
但是它从不调用该方法。方法如下所示:
public void dismissSignUpDialog(AjaxBehaviorEvent e) {
setSignUpDialogDismissed(true);
}
知道我做错了什么吗?谢谢!
<f:ajax>
确实不能以这种方式在<h:link>
上工作。用<h:commandLink>
代替。
<h:form>
<h:commandLink value="Sign In" action="login.jsp?faces-redirect=true" />
<f:ajax listener="#{loginHandler.dismissSignUpDialog}" />
</h:commandLink>
</h:form>
顺便问一下,为什么你还在使用JSP而不是Facelets? 我认为您最好使用<h:commandLink>
,其动作设置为您的方法,然后更改该方法以返回与您的结果相对应的字符串。即:
<h:commandLink value="Sign In" action="#{loginHandler.dismissSignUpdialog}" />
和豆子:
public String dismissSignUpDialog() {
setUpDialogDismissed(true);
return "login";
}