我正在使用 JSF 2.0 和 primefaces 3.0。我有一个 rowtoggler 和 rowexpansion。由于我使用的是 primefaces 旧版本,所以我没有 rowToggle 事件。而且我需要在行扩展时通过ajax在服务器端调用一个方法。所以我在 rowtoggler 周围放置了 div 标签并调用了一个 javascript 函数。现在我想通过在 rowexpansion 内的 panelgrid 的 click 事件启动 ajax 调用。如果发生这种情况,那么它看起来像 3.4 rowToggle 事件。
问问题
3095 次
4 回答
5
单击行切换器时,您可以使用 jQuery 的事件绑定来执行 Javascript。
<h:form id="form">
<p:dataTable id="dt" value="[1,2]">
<p:column>
<p:rowToggler />
</p:column>
</p:dataTable>
<p:remoteCommand name="remotecommand"
oncomplete="alert('remote command fired')" />
</h:form>
<script type="text/javascript">
$("[id='form:dt'] .ui-row-toggler").on("click", function() { remotecommand(); });
</script>
Javascript的解释:
通过$("[id='form:dt'] .ui-row-toggler")
id( form:dt
) 选择数据表,然后选择所有具有样式类的后代ui-row-toggler
。
将.on("click", function() { remotecommand(); })
匿名函数绑定到 click 事件,该事件触发由p:remoteCommand
.
您可以使用 或来p:remoteCommand
执行 bean 方法。;-)action
actionListener
请注意,我认为这不是一个长期的解决方案。升级到 PrimeFaces 3.4 将是一个更好的解决方案。
于 2012-12-12T14:47:01.897 回答
2
我已将 commandLink 放在 rowtoggler 周围,并通过 commandlink 进行 ajax 调用,我还可以使用 EL2.2 通过它传递值
<p:commandLink action="#{myBean.doSomething(foo)}" >
<p:rowToggler/>
</p:commandLink>
于 2013-02-27T20:33:20.813 回答
0
我猜你会喜欢
<p:panelGrid>
<p:ajax event="click" listener="#{bean.onclick}" />
...
the rest of the grid here
...
<p:panelGrid>
我还没有测试它,但它适用于其他组件
于 2012-12-12T13:55:29.793 回答
0
除了 siebz0r 的解决方案,我还找到了另一种解决方案。
<p:commandLink action="#{bean.abcFunction}"> <p:rowToggler/> </p:commandLink>
它也有效且简单:-)
于 2012-12-13T13:44:20.057 回答