3

h:commandLink 与 f:ajax 和 ui:repeat 一起使用时不会调用 actionlistener 当我单击链接时,我必须在 bean 的“onload”方法中传递一个参数并刷新面板组“assist”。当我使用 commandButton 但不使用 commandLink 时,它工作正常。

<h:panelGroup id="assist" styleClass="tabbed-panel-vertical">
<ul id="assistlink" class="tabbed-panel-vertical-tabs">
    <ui:repeat var="assistants"
        value="#{permissions.repAssistants}">
        <li><h:commandLink 
                            actionListener="#{permissions.onload}"
            value="#{assistants.name}"
                styleClass="#{permissions.selectedAssistant==assistants.userId ? 'selected' : ''}">
                <f:ajax
                    render=":permissionsform:assist :permissionsform:permissionsContent"
                    execute="@this">
                    <f:attribute name="assistantId"
                        value="#{assistants.userId}" />
                </f:ajax>
            </h:commandLink></li>
    </ui:repeat>
</ul>

    `public void onload(ActionEvent event) {
    Long userId = Long.valueOf(541);// user.getUserId();
    Long assistantId = (Long) event.getComponent().getAttributes().get("assistantId");
    System.out.println("User " + assistantId); 
    }`
4

1 回答 1

4

根据评论:

@BalusC 它的 javascript 问题。感谢您指导我查看 javascript 控制台。JS 错误“未捕获的 ReferenceError:未定义 mojarra”

确保<h:head>您的主模板中有一个标签,而不是<head>. 通过这种方式,JSF 将能够为 Ajax 魔术自动包含必要的 JavaScript 文件。

于 2012-03-30T03:17:57.267 回答