Java JSF<;f:ajax>;从页面调用另一个侦听器后,不会调用该侦听器
当我单击commandLink时,侦听器工作,表单重新呈现器显示另一个commandLink。然后,如果单击了该命令链接,则只会重新启动表单,而不会调用侦听器。我刷新后,一切都好了 我的JSF页面:Java JSF<;f:ajax>;从页面调用另一个侦听器后,不会调用该侦听器,java,ajax,jsf,jakarta-ee,Java,Ajax,Jsf,Jakarta Ee,当我单击commandLink时,侦听器工作,表单重新呈现器显示另一个commandLink。然后,如果单击了该命令链接,则只会重新启动表单,而不会调用侦听器。我刷新后,一切都好了 我的JSF页面: <h:form> <h:panelGroup layout="block" styleClass="navLink" rendered="#{userBean.loggedUser ne null and not userBean.userLogg
<h:form>
<h:panelGroup layout="block" styleClass="navLink"
rendered="#{userBean.loggedUser ne null and not userBean.userLogged and not userBean.loggedUserFriend}">
<h:commandLink value="Add to friends">
<f:ajax render="@form" listener="#{userBean.addToFriends}"/>
</h:commandLink>
</h:panelGroup>
<h:panelGroup layout="block" styleClass="navLink" rendered="#{userBean.loggedUser ne null and userBean.loggedUserFriend}">
<h:commandLink value="Remove from friends">
<f:ajax render="@form" listener="#{userBean.removeFromFriends}"/>
</h:commandLink>
</h:panelGroup>
</h:form>
编辑:也尝试使用无条件呈现的链接,但没有效果您是否错过了向侦听器添加AjaxBehaviorEvent的过程,或者它是否丢失了?@johny它丢失了,但添加它并没有修复任何问题两个问题:1)您使用的浏览器是什么?2) 您是否有任何客户端错误(例如Firebug控制台中的错误)?@dratewka 1)在Chrome 26、FF20和IE10中复制;2) 没有错误,只是发布请求。这很难做到,但如果您使用mojarra,可能会尝试将id添加到您的命令链接中—这帮助我解决了几个奇怪的ajax行为—不要问为什么:)
@Named
@SessionScoped
public class UserBean implements Serializable {
private User loggedUser;
private User user;
@EJB
private UserDAO dao;
public boolean isUserLogged() {
return loggedUser != null && user.equals(loggedUser);
}
public boolean isLoggedUserFriend() {
return loggedUser != null && loggedUser.getFriends().contains(user);
}
public void addToFriends() {
if (loggedUser != null && user != null) {
loggedUser.addFriend(user);
dao.update(loggedUser);
}
}
public void removeFromFriends() {
if (loggedUser != null && user != null) {
loggedUser.getFriends().remove(user);
dao.update(loggedUser);
}
}
}