Я не знаю, является ли это общей проблемой, но эта странная проблема вызывает у меня некоторую головную боль ... У меня странное поведение, у моего приложения много диалогов, и когда пользователь открывает один,диалог должен показывать содержимое по умолчанию.Проблема в том, что я очищаю все свойства bean-компонента перед показом диалога, но иногда кажется, что форма не очищена !!Например, это один из диалоговых окон, в которых возникает эта проблема:
Это изображение показывает, как диалоговое окно отображается при первом его открытии, все поля очищаются и выбирается второе радио.Если я изменю выбор радиостанции и введу что-то в поле ввода, таблица данных немедленно отображает данные в соответствии с поиском.Итак, если я нажимаю «Отмена» (отмена на португальском), это диалоговое окно закрывается, как и ожидалось.
Затем я снова открываю это диалоговое окно и:
В полях хранятся поляпоследнее издание, сделанное пользователем.Я думал, что не очищаю бин, но если я просто нажму F5 (обновить), диалоговое окно будет показано, как на первом изображении.Я не знаю почему, но некоторые поля не обновляются !!
Мои диалоги создаются с использованием этого шаблона:
<ui:component>
<hrgi:popup id="#{idPopup}" titulo="#{titulo}" renderizar="#{popup.visivel}"
bordaConteudo="#{bordaConteudo eq null?true:bordaConteudo}">
<f:facet name="cabecalho">
<ui:insert name="cabecalho"></ui:insert>
</f:facet>
<f:facet name="conteudo">
<h:panelGroup id="#{idPopup}Conteudo" layout="block" style="width:100%">
<p:focus/>
<ui:insert name="conteudo">Nenhum conteúdo definido!</ui:insert>
</h:panelGroup>
</f:facet>
<f:facet name="botoes">
<h:panelGroup style="width:100%">
<h:panelGrid id="#{idPopup}PainelMensagens" style="width:100%">
<p:messages/>
</h:panelGrid>
<ui:insert name="barraDeBotoes">
<h:panelGroup layout="block" style="width:100%">
<p:commandButton value="CANCELAR" styleClass="hrgi-botao-popup"
immediate="true" update="@form"
action="#{controladorPopup.fechar}"/>
<p:commandButton value="OK" styleClass="hrgi-botao-popup"
action="#{controladorPopup.submit}" update="@form alerta #{atualizar}">
<f:param name="REQUIRED" value="true"/>
</p:commandButton>
</h:panelGroup>
</ui:insert>
</h:panelGroup>
</f:facet>
</hrgi:popup>
</ui:component>
Диалог, показанный в печати, создается следующим образом:
<ui:composition template="../templates/popupSubmit.xhtml">
<ui:param name="titulo" value="#{cadastroMsg['popup.cadastro.listagem_empresa.titulo']}" />
<ui:param name="popup" value="#{modeloPopupBuscaEmpresa}" />
<ui:param name="controladorPopup" value="#{controladorPopupBuscaEmpresa}" />
<ui:define name="conteudo">
<h:panelGroup layout="block" styleClass="hrgi-div-form clearfix">
<hrgi:listagem listenerBusca="#{controladorListagemEmpresa}"
valorBusca="#{modeloListagemEmpresa.valorBusca}">
<f:facet name="filtrosAdicionais">
<h:panelGroup layout="block">
<h:outputText value="#{msgGerais['gerais.listagem.filtro']}"/>
<h:selectOneRadio value="#{modeloListagemEmpresa.tipoFiltro}" immediate="true">
<f:selectItem itemLabel="CNPJ" itemValue="0"/>
<f:selectItem itemLabel="Apelido" itemValue="1"/>
<f:ajax event="change" immediate="true"
render="tabelaListagem"
listener="#{controladorListagemEmpresa.atualizarTipoFiltro}"/>
</h:selectOneRadio>
</h:panelGroup>
</f:facet>
<f:facet name="tabela">
<h:panelGroup layout="block" style="height: 219px; width: 103%">
<p:dataTable value="#{modeloListagemEmpresa.itens}"
scrollable="true" height="194" var="empresa"
emptyMessage="#{msgGerais['gerais.sem_dados']}"
selectionMode="single" onRowUnselectUpdate="painelInformacoes"
selection="#{modeloListagemEmpresa.itemSelecionado}"
onRowSelectUpdate="painelInformacoes">
<p:column style="width:20%"
headerText="Documento">
<h:outputText value="#{empresa.cnpj}"/>
</p:column>
<p:column style="width:80%"
headerText="Apelido">
<h:outputText value="#{empresa.nomeEmpresa}"/>
</p:column>
</p:dataTable>
</h:panelGroup>
</f:facet>
<f:facet name="informacoes">
<ui:include src="../../outros/painelInformacoesBasicasEmpresa.xhtml">
<ui:param name="modeloPopup" value="#{modeloListagemEmpresa}"/>
<ui:param name="pessoaSelecionada" value="#{controladorListagemEmpresa.pessoaSelecionada}"/>
</ui:include>
</f:facet>
</hrgi:listagem>
<p:messages/>
</h:panelGroup>
</ui:define>
</ui:composition>
если я изменю код шаблона кнопки «Cancelar», просто удалив немедленный = true, он отлично работает:
<p:commandButton value="CANCELAR" styleClass="hrgi-botao-popup"
update="@form"
action="#{controladorPopup.fechar}"/>
, но в других диалоговых окнах у меня есть поля, которые являются обязательными инужна проверка ... Может ли кто-нибудь объяснить мне, почему это происходит ??