如何将f:ajax标签添加到h:链接?

时间:2011-08-09 18:49:45

标签: ajax jsf

我有这个:

<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);
}

知道我做错了什么吗?谢谢!

2 个答案:

答案 0 :(得分:4)

<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?

答案 1 :(得分:1)

我认为使用<h:commandLink>将其操作设置为您的方法会更好,然后更改方法以返回与您的结果对应的String。那就是:

 <h:commandLink value="Sign In" action="#{loginHandler.dismissSignUpdialog}" />

豆子:

 public String dismissSignUpDialog() {
     setUpDialogDismissed(true);
     return "login";
 }