【发布时间】:2012-04-13 14:17:51
【问题描述】:
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);
}`
【问题讨论】:
-
请详细描述它究竟是如何失败的。请提及确切的 JSF 实现/版本。
-
Jsf 2.0,mojarra impl。当我单击命令链接时,永远不会调用“onload”方法。当我用 commandButton 替换 commandLink 时,我看到该方法被调用。从 commandLink 生成的输出: PATRICK CARROLL 使用命令链接生成的输出:
-
“JSF 2.0”是一个规范。您使用的是哪个 Mojarra 版本?你用过哪些浏览器?单击链接时,JavaScript 控制台中是否有任何错误? ajax 请求/响应如何?顺便说一句,
<f:attribute>方法并不像您期望的那样有效,但这是一个不同的问题。 -
顺便说一句,这段代码对我来说在所有四个主要网络浏览器的最新版本上都可以使用 Mojarra 2.1.7 完美运行(当然希望
<f:attribute>不起作用你想要的方式)。所以你的问题是由到目前为止代码中没有显示的其他东西引起的。 -
@BalusC 它的 javascript 问题。感谢您指导我查看 javascript 控制台。 JS 报错“Uncaught ReferenceError: mojarra is not defined”
标签: ajax jsf-2 commandlink