2

我正在使用 JSF 2.0 和 primefaces 3.0。我有一个 rowtoggler 和 rowexpansion。由于我使用的是 primefaces 旧版本,所以我没有 rowToggle 事件。而且我需要在行扩展时通过ajax在服务器端调用一个方法。所以我在 rowtoggler 周围放置了 div 标签并调用了一个 javascript 函数。现在我想通过在 rowexpansion 内的 panelgrid 的 click 事件启动 ajax 调用。如果发生这种情况,那么它看起来像 3.4 rowToggle 事件。

4

4 回答 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 方法。;-)actionactionListener

请注意,我认为这不是一个长期的解决方案。升级到 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 回答