Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JSF<;f:ajax>;从页面调用另一个侦听器后,不会调用该侦听器_Java_Ajax_Jsf_Jakarta Ee - Fatal编程技术网

Java JSF<;f:ajax>;从页面调用另一个侦听器后,不会调用该侦听器

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

当我单击commandLink时,侦听器工作,表单重新呈现器显示另一个commandLink。然后,如果单击了该命令链接,则只会重新启动表单,而不会调用侦听器。我刷新后,一切都好了

我的JSF页面:

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