繁体   English   中英

onstart 和 oncomplete 不适用于使用 p:commandLink 的数据表

[英]onstart and oncomplete don't work in datatable with p:commandLink

我编写了一个 JS 函数,它在加载下一个屏幕时显示“正在加载”DIV(我使用的是 commanlinks,它运行良好,onstart="showthemodal" oncomlete="hidethemodal")。

现在问题出在这个页面上,特别是我有一个数据表(我写了上面的代码),它在数据表中有许多命令链接,并且这里的 onstart 和 oncomplete 不起作用。 我无法在不更改按钮外观的情况下显示模态。 感谢您的支持 有谁知道我该如何解决?

这是我的代码:

<p:dataTable id="dataTable" var="user"
            tableStyle="table-layout: auto"
            value="#{gestionUsuariosController.listaUsuarios}" paginator="true"
            rows="10" lazy="true" dynamic="true"
            style="font-size:16px;">

            <p:column styleClass="ellipsis"
                sortBy="#{user.userName}">
                <f:facet name="header">
                    <h:outputText value="Nombre" />
                </f:facet>
                <h:outputText id="userName" value="#{user.userName}" />
                <p:tooltip for="userName" value="#{user.userName}" />
            </p:column>

            <p:column styleClass="ellipsis"
                sortBy="#{user.userName}">
                <f:facet name="header">
                    <h:outputText value="Password" />
                </f:facet>
                <h:outputText id="password" value="#{user.password}" />
                <p:tooltip for="password" value="#{user.password}" />
            </p:column>

            <p:column styleClass="ellipsis" style="width: 80px;">
                <f:facet name="header">
                    <h:outputText value="Accion" />
                </f:facet>
                <p:commandLink action="consulta" onstart="javascript:bloquearInterfaz();" oncomplete="javascript:desbloquearInterfaz();">
                    <h:graphicImage value="/resources/img/lupa.png"  height="20px"/>
                    <f:param name="userName" value="#{user.userName}" />
                </p:commandLink>
                &nbsp;
                <p:commandLink action="modificacion" onstart="javascript:bloquearInterfaz();" oncomplete="javascript:desbloquearInterfaz();">
                    <h:graphicImage value="/resources/img/icono_edit.png" height="20px" />
                    <f:param name="userName" value="#{user.userName}" />
                </p:commandLink>
                &nbsp;
                <p:commandLink action="baja" onstart="javascript:bloquearInterfaz();" oncomplete="javascript:desbloquearInterfaz();">
                    <h:graphicImage value="/resources/img/borrar.png"  height="20px" />
                    <f:param name="userName" value="#{user.userName}" />
                </p:commandLink>
            </p:column>
        </p:dataTable>

明确说明onstartoncompelte是客户端方法,这意味着您无法将其连接到managedBean (执行方法),但是可以使用p:remoteCommand使其工作(执行 managedBean 方法)

它看起来像这样

我的页面.xhtml

<script type="text/javascript">
  myfunction () {
          ...
  }            
</script>

...

<p:commandButton  onstart="myfunction() "  />

如果你想执行一个 managedBean 方法

我的页面.xhtml

<script type="text/javascript">
   myfunction () {
        ...
        cpr();
   }            
</script>

...

<p:remoteCommand  name="cpr" actionListener="#{managedBean.method()}"  />
<p:commandButton  onstart="myfunction() "  />

希望对你有帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM