我有<p:wizard>
个标签。在第一个选项卡上,有一个<p:dataTable>
,用户需要选择一行才能继续运行。如果他们没有选择该行,我想阻止用户转到下一个标签并显示一条消息。我可以使用此代码显示消息,但当他们单击下一步时,下一个按钮将消失:
public String onFlowProcess(FlowEvent event) {
//si no eligen un afiliado, desplegar un error: "Debe elegir un afiliado para seguir"
if (afiliado.getSelectedAfi() == null) {
FacesContext.getCurrentInstance().addMessage(null,
new FacesMessage("Debe de elegir un afiliado para continuar."));
return "afiliadoTab";
} else {
return event.getNewStep();
}
}
如果需要,我可以放置XHTML代码。在上面的代码中,afiliadoTab
是数据表所在的当前选项卡的名称。我告诉它如果afiliado
对象是null
(如果用户没有选择一行),则显示消息并留在那里。 &#34;留在那里&#34;运作不好。我在这段代码中做错了吗?
这是与问题(向导部分)相关的XHTML代码:
<p:wizard flowListener="#{afiliadoController.onFlowProcess}">
<!-- first tab -->
<p:tab id="afiliadoTab" title="Afiliado">
<p:panel header="Agrega un afiliado" id="panelAfiliado">
<!-- <p:messages autoUpdate="true" for="validationAfiForm"/> -->
<p:panelGrid columns="4" layout="grid">
<p:outputLabel for="nombres" value="Nombres:" />
<p:inputText id="nombres" value="#{afiliadoController.afiliado.nombre}"
requiredMessage="Debe insertar un nombre."/>
<p:outputLabel for="apellidos" value="Apellidos:" />
<p:inputText id="apellidos" value="#{afiliadoController.afiliado.apellido}"
requiredMessage="Debe insertar un apellido."/>
<p:outputLabel for="estadoCivil" value="Estado Civil:" />
<p:selectOneMenu id="estadoCivil" effect="drop" value="#{afiliadoController.afiliado.estado_civil}"
requiredMessage="Debe seleccionar un estado civil.">
<f:selectItem itemLabel="Estado Civil" itemValue=""/>
<f:selectItem itemLabel="Soltero" itemValue="S"/>
<f:selectItem itemLabel="Casado" itemValue="C"/>
<f:selectItem itemLabel="Union Libre" itemValue="U"/>
<f:selectItem itemLabel="Divorciado" itemValue="D"/>
<f:selectItem itemLabel="Viudo" itemValue="V"/>
</p:selectOneMenu>
<p:outputLabel for="direccion" value="Direccion:" />
<p:inputText id="direccion" value="#{afiliadoController.afiliado.direccion}"/>
<p:outputLabel for="telefono" value="Telefono:" />
<p:inputMask id="telefono" value="#{afiliadoController.afiliado.telefono}" mask="(999) 999-9999"
requiredMessage="Debe insertar un telefono."/>
<p:outputLabel for="fechaNacimiento" value="Fecha de Nacimiento:"/>
<p:calendar id="fechaNacimiento" yearRange="c-100:c" pattern="yyyy/MM/dd" navigator="true"
value="#{afiliadoController.afiliado.fecha_nacimiento}"
requiredMessage="Debe insertar su fecha de nacimiento."/>
<p:commandButton value="Insertar" icon="fa fa-save" process="panelAfiliado" update="afiliadoTable"
actionListener="#{afiliadoController.insertAfiliado}" />
</p:panelGrid>
</p:panel>
<p:panel header="Selecciona un Afiliado" id="panelTable">
<!-- tabla con afiliados para seleccionar -->
<p:dataTable id="afiliadoTable" var="afi" value="#{afiliadoController.afiliado.afiliados}" editable="true"
selection="#{afiliadoController.afiliado.selectedAfi}"
rowKey="#{afi.afiliado_id}" editMode="cell" >
<p:column selectionMode="single" style="width:16px;"/>
<p:column headerText="Afiliado ID">
<h:outputText value="#{afi.afiliado_id}"/>
</p:column>
<p:column headerText="Nombres">
<p:cellEditor>
<f:facet name="output"><h:outputText value="#{afi.nombre}" /></f:facet>
<f:facet name="input"><p:inputText value="#{afi.nombre}" style="width:96%"/></f:facet>
</p:cellEditor>
</p:column>
<p:column headerText="Apellidos">
<p:cellEditor>
<f:facet name="output"><h:outputText value="#{afi.apellido}" /></f:facet>
<f:facet name="input"><p:inputText value="#{afi.apellido}" style="width:96%"/></f:facet>
</p:cellEditor>
</p:column>
<p:column headerText="Eliminar">
<p:commandButton icon="fa fa-remove" value="Eliminar" process="afiliadoTable" update="afiliadoTable"
actionListener="#{afiliadoController.deleteAfiliado(afi.afiliado_id)}" />
</p:column>
<f:facet name="footer">
<p:commandButton process="afiliadoTable" update=":wizard:afiliadoDetail" icon="ui-icon-search"
value="Ver Afiliado" oncomplete="PF('afiliadoDialog').show()" />
</f:facet>
</p:dataTable>
</p:panel>
</p:tab>
<!-- second tab -->
<p:tab id="beneficiarioTab" title="Beneficiario">
<p:panel header="Agrega Beneficiario">
<!-- form para insertar beneficiario -->
</p:panel>
<p:panel header="Lista de Beneficiarios"></p:panel>
</p:tab>
</p:wizard>
答案 0 :(得分:1)
我终于发现了什么问题。出于某种原因,我无法使用<p:panelGrid> </p:panelGrid>
。我必须使用<h:panelGrid></h:panelGrid>
。
单击“下一步”后,使用<p:panelGrid> </p:panelGrid>
会导致我的“下一步”按钮消失。
我希望这有助于某人。