Bom dia,
A configuração do projeto: Primefaces 5.0, JSF 2.2 e JPA 2.1.
Tenho o CRUD cidade. Quando executo o CREATE de cidade, permito ao meu usuário a inserção de novos estados de outros países, juntamente com sua sigla, certo. Estou com o seguinte problema: Quando clico no botão Novo Estado’ o mesmo abre o componente dialog, mas não apresenta os campos.
Algumas soluções utilizadas sem sucesso:
- Retirar o botão ‘Novo Estado’ de dentro do componente PainelGrid na qual se realiza o rendered do Dialog ‘Nova Cidade’.
- Retirar o rendered do componente PainelGrid do componente Dialog ‘Novo Estado’.
Dialog “Novo Cidade”:
[code]<p:dialog id=“CidadeCreateDlg” widgetVar=“CidadeCreateDialog” closeOnEscape=“true” modal=“true” appendTo="@(body)" header="#{bundle.titleDialogNew} #{bundle.cityText}">
<f:view>
<h:form id=“CidadeCreateForm”>
<h:panelGroup id=“display”>
<p:messages id="mensagens" showDetail="true" autoUpdate="true" closable="true"/>
<h:outputText value="* campo obrigatório."/>
<p:panelGrid rendered="#{cidadeControle.selecionado != null}">
<p:row>
<p:column>
<p:outputLabel value="#{bundle.countryText}" for="cmbPais"/>
</p:column>
<p:column colspan="2">
<p:selectOneMenu id="cmbPais"
required="true">
<f:selectItem itemLabel="#{bundle.comboboxSelectText}" itemValue=""/>
<f:selectItems value="#{paisControle.itens}"
var="country"
itemLabel="#{country.pais}"
itemValue="#{country}"/>
</p:selectOneMenu>
<p:message for="cmbPais"/>
</p:column>
</p:row>
<p:row>
<p:column>
<p:outputLabel value="#{bundle.stateText}" for="cmbEstado"/>
</p:column>
<p:column>
<p:selectOneMenu id="cmbEstado"
value="#{cidadeControle.selecionado.codigoEstado}"
required="true"
requiredMessage="#{bundle.stateText}: #{bundle.errorMessageValidationField}">
<f:selectItem itemLabel="#{bundle.comboboxSelectText}" itemValue=""/>
<f:selectItems value="#{estadoControle.itens}"
var="state"
itemLabel="#{state.estado}"
itemValue="#{state}"/>
</p:selectOneMenu>
</p:column>
<p:column>
<p:commandButton id="#{bundle.buttonNameNew}" title="#{bundle.buttonTitleNew} #{bundle.stateText}" icon="ui-icon-plus" update=":EstadoCreateForm" oncomplete="PF('EstadoCreateDialog').show();" actionListener="#{estadoControle.prepararCriar}"/>
</p:column>
</p:row>
<p:row>
<p:column>
<p:outputLabel value="CEP" for="txtCep"/>
</p:column>
<p:column colspan="2">
<p:inputMask id="txtCep" mask="99.999-999" value="#{cidadeControle.selecionado.cep}" title="#{bundle.cityTextPostalCode}" required="true"/>
</p:column>
</p:row>
<p:row>
<p:column>
<p:outputLabel value="#{bundle.cityText}" for="txtCidade"/>
</p:column>
<p:column colspan="2">
<p:inputText id="txtCidade" value="#{cidadeControle.selecionado.cidade}" title="#{bundle.cityText}" required="true" requiredMessage="#{bundle.cityText}: #{bundle.errorMessageValidationField}"/>
</p:column>
</p:row>
<p:row>
<p:column>
<p:outputLabel value="#{bundle.cityTextCitizenship}" for="txtNaturalidade"/>
</p:column>
<p:column colspan="2">
<p:inputText id="txtNaturalidade" value="#{cidadeControle.selecionado.naturalidade}" title="#{bundle.cityTextCitizenship}" required="true"/>
</p:column>
</p:row>
</p:panelGrid>
<p:commandButton id="#{bundle.buttonNameSave}" value="#{bundle.buttonTitleSave}" icon="ui-icon-disk" actionListener="#{cidadeControle.criar}" update="display,:CidadeListForm:datalist" oncomplete="handleSubmit(args,'CidadeCreateDialog')"/>
<p:commandButton id="#{bundle.buttonNameCancel}" value="#{bundle.buttonTitleCancel}" icon="ui-icon-cancel" actionListener="#{cidadeControle.cancelar}" oncomplete="PF('CidadeCreateDialog').hide();"/>
</h:panelGroup>
</h:form>
</f:view>
</p:dialog>[/code]
Na Linha 42 se encontra o botão, na qual abre-se o dialog abaixo.
Dialog “Novo Estado”:
<p:dialog id="EstadoCreateDlg" widgetVar="EstadoCreateDialog" closeOnEscape="true" modal="true" appendTo="@(body)" header="#{bundle.titleDialogNew} #{bundle.stateText}">
<f:view>
<h:form id="EstadoCreateForm">
<h:panelGroup id="display">
<p:messages for="mensagens"/>
<h:outputText value="* campo obrigatório."/>
<p:panelGrid columns="2" rendered="#{estadoControle.selecionado!=null}">
<p:outputLabel value="#{bundle.countryText}" for="cmbPais"/>
<p:selectOneMenu id="cmbPais"
value="#{estadoControle.selecionado.codigoPais}"
required="true"
requiredMessage="#{bundle.countryText}: #{bundle.errorMessageValidationField}">
<f:selectItem itemLabel="#{bundle.comboboxSelectText}" itemValue=""/>
<f:selectItems value="#{paisControle.itens}"
var="country"
itemLabel="#{country.pais}"
itemValue="#{country}"/>
</p:selectOneMenu>
<p:outputLabel value="#{bundle.stateText}" for="txtEstado"/>
<p:inputText id="txtEstado" value="#{estadoControle.selecionado.estado}" title="#{bundle.stateText}" required="true" requiredMessage="#{bundle.cityTextCitizenship}: #{bundle.errorMessageValidationField}"/>
<p:outputLabel value="#{bundle.stateTextUF}" for="txtUF"/>
<p:inputMask mask="aa" id="txtUF" value="#{estadoControle.selecionado.uf}" title="#{bundle.stateTextUF}" required="true" requiredMessage="#{bundle.cityTextCitizenship}: #{bundle.errorMessageValidationField}"/>
</p:panelGrid>
<p:commandButton id="#{bundle.buttonNameSave}" value="#{bundle.buttonTitleSave}" icon="ui-icon-disk" actionListener="#{estadoControle.criar()}" update=":growl,:CidadeCreateForm:cmbEstado" oncomplete="handleSubmit(args,'EstadoCreateDialog')"/>
<p:commandButton id="#{bundle.buttonNameCancel}" value="#{bundle.buttonTitleCancel}" icon="ui-icon-cancel" actionListener="#{estadoControle.cancelar}" oncomplete="PF('EstadoCreateDialog').hide();"/>
</h:panelGroup>
</h:form>
</f:view>
</p:dialog>