对话框InputText Primefaces jsf的错误验证

时间:2014-01-15 04:31:39

标签: validation jsf primefaces dialog required

我有DataTable并编辑了一个列表,您必须打开Dialog组件,其中包含从DataTable发送所选对象的相应值,但无法打开。我注意到函数是REQUIRED = "true"并且没有显示错误,唯一帮助我删除函数的解决方案是REQUIRED

如何在不执行REQUIRED功能的情况下调出Dialog组件。代码示例:

<p:tab id="tab_listar" title="#{msg.labelListar}">
    <h:form id="form_mostrar_listado">
        <p:dialog id="ModificarLugar" header="Modificar Datos" widgetVar="LugarDialogo2"
                  modal="false" resizable="false" hideEffect="bounce" showEffect="explode">
            <h:panelGrid id="ModificarLugar1" columns="2" cellpadding="5">
                <h:outputText value="#{msg.labelCodigo}"/>
                <h:outputText value="#{BeanLugar.objLugarMod.cod_lugar}"/>
                <h:outputText value="#{msg.labelNombre}"/>
                <p:inputText value="#{BeanLugar.objLugarMod.nombre}" id="nombre_lu_mod"
                             required="true" requiredMessage="#{msg.labelNoVacio}"
                             validatorMessage="#{msg.labelNoValido}"> </p:inputText>
                <h:outputText value="#{msg.labelUbicacion}"/>
                <h:panelGroup>
                    <p:selectOneMenu value="#{BeanLugar.objLugarMod.objPais.cod_pais}"
                                     required="true" id="cod_pais_mod" effect="fade"
                                     requiredMessage="#{msg.labelNoVacio}"
                                     validatorMessage="#{msg.labelNoValido}">
                        <f:selectItem itemLabel="#{msg.labelEligePais}" itemValue=""/>
                        <f:selectItems value="#{Pais.cargarComboPais}"/>
                    </p:selectOneMenu>
                    <h:message showDetail="false" showSummary="true" for="cod_pais_mod"/>
                </h:panelGroup>
                <p:commandButton value="Cancelar" actionListener="#{BeanLugar.doiniciarModLugar()}"
                                 update=":LugarTabView:form_mostrar_listado" icon="ui-icon-triangl-1-w"
                                 immediate="true"> </p:commandButton>

                <p:commandButton id="btn_actualizar" value="#{msg.btnActualizar}"
                                 update=":LugarTabView:form_mostrar_listado"
                                 actionListener="#{BeanLugar.doActualizaLugar()}"> </p:commandButton>
            </h:panelGrid>
        </p:dialog>
        <p:panel id="datListadoLugar">
            <h:outputText value="#{msg.labelListado}"/>
            <h:panelGrid columns="3" cellspacing="10" width="100">

                <p:commandButton value="#{msg.btnNuevo}" update="form_mostrar_listado"
                                 actionListener="#{BeanLugar.doiniciarListadoLugar()}"/>
                <p:commandButton value="#{msg.btnListar}" update="form_mostrar_listado"
                                 actionListener="#{BeanLugar.doListarLugar()}"/>
            </h:panelGrid>
            <h:panelGrid columns="2" rendered="#{BeanLugar.sizeLugar ne '0'}">
                <h:outputText value="#{msg.labelCantidad}"/>
                <h:outputText value="#{BeanLugar.arrLugar.size()}"/>

            </h:panelGrid>
            <h:panelGrid columns="1" rendered="#{BeanLugar.sizeLugar ne '0'}">
                <p:dataTable id="resListadoLugar" value="#{BeanLugar.doListarLugar()}" var="ls"
                             paginator="true" rows="5" paginatorPosition="both" rowsPerPageTemplate="5,10,15">

                    <p:column>
                        <f:facet name="header">
                            <h:outputText value="#{msg.labelLugar}"/>
                        </f:facet>
                        <h:outputText value="#{ls.nombre}"/>
                    </p:column>
                    <p:column>
                        <f:facet name="header">
                            <h:outputText value="#{msg.labelUbicacion}"/>
                        </f:facet>
                        <h:outputText value="#{ls.objPais.nomb_pais}"/>
                    </p:column>
                    <p:column>
                        <f:facet name="header">
                            <h:outputText value="#{msg.labelVer}"/>
                        </f:facet>
                        <p:commandLink title="Ver" action="#{BeanLugar.mostrarLugar(ls)}"
                                       value="Ver" update=":LugarTabView:form_mostrar_listado:DetalleLugar"
                                       oncomplete="LugarDialogo.show()"> </p:commandLink>
                    </p:column>

                    <p:column>
                        <f:facet name="header">
                            <h:outputText value="#{msg.labelEditar}"/>
                        </f:facet>
                        <p:commandLink title="Editar" action="#{BeanLugar.editarLugar(ls)}"
                                       value="Editar"
                                       update=":LugarTabView:form_mostrar_listado:ModificarLugar"
                                       oncomplete="LugarDialogo2.show()"> </p:commandLink>
                    </p:column>
                    <p:column>
                        <f:facet name="header">
                            <h:outputText value="#{msg.labelEliminar}"/>
                        </f:facet>
                        <p:commandLink title="Eliminar" action="#{BeanLugar.eliminarLugar(ls)}"
                                       value="Eliminar"
                                       update=":LugarTabView:form_mostrar_listado:EliminarLugar"
                                       oncomplete="LugarDialogo3.show()"> </p:commandLink>

                    </p:column>
                </p:dataTable>
            </h:panelGrid>
        </p:panel>
    </h:form>
</p:tab>

1 个答案:

答案 0 :(得分:0)

您正在处理所有表单,因此JSF会尝试使用所需的true验证所有组件。您必须告诉commandLink您要处理的内容,例如:

 <p:commandLink title="Editar" action="#{BeanLugar.editarLugar(ls)}"
                                   value="Editar"
             update=":LugarTabView:form_mostrar_listado:ModificarLugar"
                                    oncomplete="LugarDialogo2.show()"
   process="resListadoLugar"> // or the path of the component you want to process
  </p:commandLink>