使用f:ajax和ui:repeat时,h:commandLink的actionListener未被调用

3

使用f:ajax和ui:repeat时,h:commandLink的actionlistener不会被调用 当我点击链接时,我必须在bean的"onload"方法中传递一个参数并刷新panelgroup "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); 
    }`

请详细描述它失败的具体情况,并提及确切的JSF版本。 - BalusC
Jsf 2.0,mojarra impl。当我单击commandlink时,方法“onload”从未被调用。当我将commandLink替换为commandButton时,我发现该方法被调用。 使用commandLink生成的输出: {{link1:PATRICK CARROLL}} 使用command link生成的输出:<input type="submit" name="j_idt13:0:j_idt15" value="PATRICK CARROLL" class="selected" /> - Smith
"JSF 2.0" 是一项规范。您使用的是哪个 Mojarra 版本?您使用了哪些浏览器?当您单击链接时,JavaScript 控制台中是否有任何错误?Ajax 请求/响应是什么样子的?顺便说一句,"<f:attribute>" 方法不像您期望的那样工作,但这是一个不同的问题。 - BalusC
顺便说一下,这段代码在最新版本的四个主要网络浏览器上与Mojarra 2.1.7完美地运行(当然,<f:attribute>不会按照您的意图工作)。因此,您的问题是由其他未在代码中显示的原因引起的。 - BalusC
我将尝试使用Mojarra 2.1.7,并尝试深入了解JavaScript。暂时谢谢。 - Smith
显示剩余2条评论
1个回答

4

根据评论:

@BalusC 这是javascript问题。感谢您指引我查看javascript控制台。JS错误 "Uncaught ReferenceError: mojarra未定义"

请确保在主模板中使用<h:head>标签而不是<head>标签。这样,JSF将能够自动包含必要的JavaScript文件以实现Ajax魔法。


1
非常感谢。像往常一样,BalusC来拯救了。 - Smith

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接