Submit do modalPanel não seta valores no Bean

3 respostas
leonardocoutoc

Boa tarde pessoal,

Estou com um problema e gostaria de saber se alguém já passou por essa
situação ou sabe resolver:

Tenho uma página que é de procura, o usuário inseri a pesquisa e manda
procurar no BD se obter resultado uma tabela(richDataTable) será
exibida com o resultado encontrado. Até aí tudo bem uma pesquisa
normal, agora que vêm o problema nesta tabela tem um campo de ações
que contém dois links um editar e outro excluir para cada obketo
encontrado, estou terminando a parte da função editar que está
funcionando da seguinte maneira:

- Clicla no botao editar de uma linha ai ele pega aquele objeto que
foi selecionado e coloca na propriedade empresaSelecionada do tipo
Empresa do controlador de Bean(controllerEmpresa), e abre um
modalPanel exibindo os valores do objeto Empresa.

- Como a ação é editar eu faço uma alteração no nome da empresa e
mando o submit(actionListern), ai que estar o problema, o submit não
atualiza os valores do Bean Empresa para depois executar o metodo do
DAO(atualizarEmpresa), parece que ele executa o DAO primeiro e depois
seta o Bean ou não nem chega a seta o Bean.

Obs.: Estou usando o saveState para segura o objeto
empresaSelecionada.

Abaixo segue o meu JSF(somente a parte do modalPanel):

<!-- <MODAL PANEL> -->

        <a4j:form id="form2" ajaxSingle="true">
                <rich:modalPanel id="modalPanelEditar" width="500" height="200"        >

                        <f:facet name="header">
                                <h:panelGroup>
                                        <h:outputText value="Editar Empresa"></h:outputText>
                                </h:panelGroup>
                        </f:facet>
                        <f:facet name="controls">
                                <h:panelGroup>
                                        <h:graphicImage value="../MyImgs/close.png" styleClass="hidelink"
                                                id="hidelink" />
                                        <rich:componentControl for="modalPanelEditar" attachTo="hidelink"
                                                operation="hide" event="onclick" />
                                </h:panelGroup>
                        </f:facet>
                        <rich:panel>
                                <h:panelGrid id="panelEditarEmp" cellspacing="10" columns="3">
                                        <h:outputText styleClass="font_labels" value="ID da empresa: "></
h:outputText>
                                        <h:inputText id="campoIdDaEmpresa" disabled="true"
                                                value="#{empresaController.empresaSelecionada.idEmpresa}"
                                                readonly="false" style="color: gray;" />
                                        <h:message for="campoIdDaEmpresa"></h:message>

                                        <h:outputText styleClass="font_labels" value="Nome da empresa:
"></h:outputText>
                                        <h:inputText requiredMessage="    Preencha o campo!"
                                                required="true" id="campoAtuEmpresa"
                                                value="#{empresaController.empresaSelecionada.nomeDaEmpresa}"
                                                size="40">
                                                <f:validateLength maximum="35" minimum="1"></f:validateLength>
                                                <f:validator validatorId="genericoValidadorDeString" />
                                        </h:inputText>
                                        <rich:spacer height="3" />

                                        <h:messages tooltip="true" fatalClass="font_erro"
                                                warnClass="font_warning" errorClass="font_erro"
                                                infoClass="font_info">
                                        </h:messages>
                                        <br />
                                        <rich:spacer height="3" />

                                        <rich:spacer height="3" />
                                        <a4j:commandButton  value="Atualizar" actionListener="#
{empresaController.atualizarEmpresa }" >
                                                <a4j:support event="onclink" reRender="saidaTeste"></
a4j:support>
                                        </a4j:commandButton>
                                        <rich:spacer height="3" />

                                </h:panelGrid>
                        </rich:panel>
                        <h:outputText id="saidaTeste" value="#
{empresaController.empresaSelecionada.nomeDaEmpresa}" />
                </rich:modalPanel>
        </a4j:form>

        <!-- </MODAL PANEL> -->

3 Respostas

M

Olá tudo bem?

Você deve colocar o:

<a4j:form id="form2" ajaxSingle="true">

Antes do:

<rich:panel>

Assim deve ficar seu código:

<!-- <MODAL PANEL> -->   
  
	<rich:modalPanel id="modalPanelEditar" width="500" height="200"        > 
		<f:facet name="header">   
			<h:panelGroup>   
				<h:outputText value="Editar Empresa"></h:outputText>   
			</h:panelGroup>   
		</f:facet>   
                <f:facet name="controls">   
			<h:panelGroup>   
				<h:graphicImage value="../MyImgs/close.png" styleClass="hidelink" id="hidelink" />   
                                        <rich:componentControl for="modalPanelEditar" attachTo="hidelink"   
                                                operation="hide" event="onclick" />   
			</h:panelGroup>   
		</f:facet>   
		<a4j:form id="form2" ajaxSingle="true">
                        <rich:panel>
                                <h:panelGrid id="panelEditarEmp" cellspacing="10" columns="3">   
                                        <h:outputText styleClass="font_labels" value="ID da empresa: "></h:outputText>   
                                        <h:inputText id="campoIdDaEmpresa" disabled="true"   
                                                value="#{empresaController.empresaSelecionada.idEmpresa}"   
                                                readonly="false" style="color: gray;" />   
                                        <h:message for="campoIdDaEmpresa"></h:message>
                                        <h:outputText styleClass="font_labels" value="Nome da empresa:"></h:outputText>   
                                        <h:inputText requiredMessage="    Preencha o campo!"   
                                                required="true" id="campoAtuEmpresa"   
                                                value="#{empresaController.empresaSelecionada.nomeDaEmpresa}"   
                                                size="40">   
                                                <f:validateLength maximum="35" minimum="1"></f:validateLength>   
                                                <f:validator validatorId="genericoValidadorDeString" />   
                                        </h:inputText>   
                                        <rich:spacer height="3" /> 
                                        <h:messages tooltip="true" fatalClass="font_erro"   
                                                warnClass="font_warning" errorClass="font_erro"   
                                                infoClass="font_info">   
                                        </h:messages>   
                                        <br />   
                                        <rich:spacer height="3" />   
                                        <rich:spacer height="3" />   
                                        <a4j:commandButton  value="Atualizar" actionListener="#{empresaController.atualizarEmpresa }">
                                                <a4j:support event="onclink" reRender="saidaTeste"></a4j:support>   
                                        </a4j:commandButton>   
                                        <rich:spacer height="3" />   
                                  </h:panelGrid>   
                        </rich:panel>   
                        <h:outputText id="saidaTeste" value="#{empresaController.empresaSelecionada.nomeDaEmpresa}" />   
	        </a4j:form>
	</rich:modalPanel>
   
  
        <!-- </MODAL PANEL> -->

Espero ter ajudado!
Qualquer duvida posta aí!

Abraços

leonardocoutoc

Markinho,

Funcionou perfeitamente, muito obrigado!

att,

Leonardo Couto.

tumvoodoo

Depois de quebrar a cabeça com isso, este post me ajudou. Obrigado!!!

Coloca como RESOLVIDO este tópico pois esta foi a única solução que realmente resolveu o problema.

Resumindo, um a4j:form dentro do modalPanel.

Abraços!

Criado 16 de junho de 2009
Ultima resposta 8 de ago. de 2012
Respostas 3
Participantes 3