在第一种形式的ajax调用之后,第二种形式不起作用

时间:2016-07-29 08:03:57

标签: ajax jsf actionlistener

我遇到了actionlistener和action的问题。该页面获取一些数据(表单1),在数据库中查找并检索列表(对于数据表)。但第二种形式不起作用。它只是刷新网络。这是我的第一次尝试。

    <h:form id="form-fecha-inicio" class="form-inline">

        <!-- some columns -->
        <h:commandButton id="btnBuscarProyectos" class="btn btn-primary"
                         action="#{backing.buscarProyectos()}" 
                         value="Buscar">
            <f:ajax execute="fechaInicio fechaFin nombreCliente" render="tablaProyectos" 
                    onevent="darFormatoTabla"/>
        </h:commandButton>
    </h:form>

    <h:dataTable id="tablaProyectos" var="proyecto" value="#{backing.listaProyectos}"
                 styleClass="table table-striped table-bordered table-hover">
        <!-- some columns -->

        <h:column>
            <h:form> <!-- this form doesn't work -->
                <h:commandButton id="bModificar" class="btn btn-default btn-group-sm"
                                 value="#{rCProyecto['ver.proyectos.modificar']}" 
                                 action="#{backing.modificarProyecto(proyecto)}"/>
                <h:commandButton id="bPDF" class="btn btn-default btn-group-sm"
                                 value="#{rCProyecto['ver.proyectos.pdf']}"
                                 actionListener="#{backing.verPDF(proyecto)}"/>                    
                <h:commandButton id="bDOC" class="btn btn-default btn-group-sm"
                                 value="#{rCProyecto['ver.proyectos.doc']}"
                                 actionListener="#{backing.verDOC(proyecto)}"
                                 rendered="#{backing.administrador}"/>
            </h:form>
        </h:column>

    </h:dataTable>

由于它不起作用,我尝试了其他的东西。我删除了ajax和动作,放了一个actionlistener,令我惊讶的是它有效!但我不知道为什么......

 <h:form id="form-fecha-inicio" class="form-inline">

        <!-- some columns -->
        <h:commandButton id="btnBuscarProyectos" class="btn btn-primary"
                         actionListener="#{backing.buscarProyectos()}" 
                         value="Buscar">

        </h:commandButton>
    </h:form>

    <h:dataTable id="tablaProyectos" var="proyecto" value="#{backing.listaProyectos}"
                 styleClass="table table-striped table-bordered table-hover">
        <!-- some columns -->

        <h:column>
            <h:form>
                <h:commandButton id="bModificar" class="btn btn-default btn-group-sm"
                                 value="#{rCProyecto['ver.proyectos.modificar']}" 
                                 action="#{backing.modificarProyecto(proyecto)}"/>
                <h:commandButton id="bPDF" class="btn btn-default btn-group-sm"
                                 value="#{rCProyecto['ver.proyectos.pdf']}"
                                 actionListener="#{backing.verPDF(proyecto)}"/>                    
                <h:commandButton id="bDOC" class="btn btn-default btn-group-sm"
                                 value="#{rCProyecto['ver.proyectos.doc']}"
                                 actionListener="#{backing.verDOC(proyecto)}"
                                 rendered="#{backing.administrador}"/>
            </h:form>
        </h:column>

    </h:dataTable>

这次最终尝试的唯一问题是我没有调用js函数“darFormatoTabla”。为什么第一次尝试不起作用?第二次尝试是一种好方法吗?如果是这种情况,我该怎么做才能调用js函数“darFormatoTabla()”。我用它来调用DataTable jQuery插件。谢谢。

更新: 我不确定我的问题是否与BalusC状态相同但我可以修复它而没有修复mojarra错误的js脚本。无论如何,谢谢你提出答案BalusC,我不知道该bug存在。 这是我做的:

<h:form id="form-fecha-inicio" class="form-inline">

        <!-- some columns -->
        <h:commandButton id="btnBuscarProyectos" class="btn btn-primary"
                         action="#{backing.buscarProyectos()}" 
                         value="Buscar">
            <f:ajax execute="fechaInicio fechaFin nombreCliente" render="form-opciones-proyecto:tablaProyectos" 
                    onevent="darFormatoTabla"/>
        </h:commandButton>
    </h:form>

    <h:form id="form-opciones-proyecto">
        <h:dataTable id="tablaProyectos" var="proyecto" value="#{backing.listaProyectos}"
                     styleClass="table table-striped table-bordered table-hover tablaProyectos">
            <!-- some columns -->

            <h:column>
                <h:commandButton id="bModificar" class="btn btn-default btn-group-sm"
                                 value="#{rCProyecto['ver.proyectos.modificar']}" 
                                 action="#{backing.modificarProyecto(proyecto)}"/>
                <h:commandButton id="bPDF" class="btn btn-default btn-group-sm"
                                 value="#{rCProyecto['ver.proyectos.pdf']}"
                                 actionListener="#{backing.verPDF(proyecto)}"/>                    
                <h:commandButton id="bDOC" class="btn btn-default btn-group-sm"
                                 value="#{rCProyecto['ver.proyectos.doc']}"
                                 actionListener="#{backing.verDOC(proyecto)}"
                                 rendered="#{backing.administrador}"/>
            </h:column>

        </h:dataTable>
    </h:form>

0 个答案:

没有答案