Olá pessoal,
eu estou precisando executar uma operação antes de ir para uma outra página
e não tem como eu chamar essa operação na minha página JSF.
Então fiz da seguinte meneira:
Eu tentei usar a tag from-action, mas não adiantou,
mas para falar a verade eu não sei como usa-la e nem pra
que serve essa tag do JSF, será que alguém poderia
me dar uma ajuda?
<navigation-rule>
<from-view-id>suaPaginaQueChamaAacao</from-view-id>
<navigation-case>
<from-action>#{TesteMB.executaMetodo}</from-action>
<from-outcome>ok</from-outcome> // se o metodo executaMetodo retornar "ok" sera direcionado para a proxima pagina
<to-view-id>paginaParaOndeIraSerRedirecionado</to-view-id>
<redirect/>
</navigation-case>
<navigation-rule>
publicclassTesteMB{publicStringexecutaOperacao(){// implementar a sua logica// se o seu metodo retornar ok como foi definido no faces-config será redirecionado return"ok";}}
Espero ter ajudado.
ricardocomp
Jóia Henrique?
Mas como ficaria a página JSF,
eu testei aqui do jeito que vc me falou
mas ainda continua dando erro aqui.
Será que tem como vc ou alguém me mostrar
um exemplo de como ficaria a página JSF?
[]'s.
H
henriquejhc
Explique o que você está fazendo.
Como você está chamando esse método?
Como está chamando a outra página.
ricardocomp
Jóia Henrique?
Eu tenho uma página que possui um formulário
<h:form><!-- Seta o valor do idProdutor através do nome do produtor selecionado no combo --><h:selectOneMenustyleClass="dimensao_combo"value="#{SolicitacaoController.idProdutor}"><f:selectItemsvalue="#{SolicitacaoController.produtoresCombo}"/></h:selectOneMenu><!-- Seta o número de amostras da solicitação de serviço --><p>NúmerodeAmostras</p><h:inputTextstyleClass="dimensao_input"value="#{SolicitacaoController.solicitacaoServico.numeroAmostra}"/><!-- Seta o nome da solicitação de serviço --><p>NomedaSolicitação</p><h:inputTextstyleClass="dimensao_input"value="#{SolicitacaoController.solicitacaoServico.nome}"/><h:messages/><p> </p><!-- Cria a solicitação de serviço corrente --><h:commandButtonvalue="Avançar"action="#{SolicitacaoController.create}"><!-- Seta o número de amostras no contador de AmostraController --><f:setPropertyActionListenertarget="#{AmostraController.cont}"value="#{SolicitacaoController.solicitacaoServico.numeroAmostra}"/></h:commandButton></h:form>
e quando eu clicar no botão avançar eu quero que ele excute a action
action="#{SolicitacaoController.create}"
e vá para a outra página e ao mesmo tempo
execute a ação:
publicclassSolicitacaoController{publicStringcreate(){// implemente a sua lógica// .......return"nova_amostra";}}
Preste atenção aqui:
<navigation-case>
<from-action>#{SolicitacaoController.create}</from-action> // nome do MenagedBean "." nome do metodo (isso é a sua action)
<from-outcome>nova_amostra</from-outcome> // retorno do seu método
<to-view-id>/nova_amostra.jsp</to-view-id> // pagina para onde irá
</navigation-case>
Qualquer dúvida é só postar.
Espero ter ajudado.
H
henriquejhc
ricardocomp:
O meu método create
retorna uma string “sucesso_ins”
e a ação:
O que o método novaAmostra da classe AmostraController faz? Apenas retorna uma String?
Ainda não entendi. Por que não consegue fazer tudo em apenas uma action?
ricardocomp
Henrique vc ou alguém sabe me dizer
se existe uma maneira de executar uma
operação através do faces-config principalmente
dentro da tag ?
[]'s.
ricardocomp
Esse métodos retornam apenas String
Henrique, eu utilizo Managed-Beans diferentes
por isso não consigo executar duas ações
diferentes de managed-benas diferentes
ao mesmo tempo.
Então, mude o retorno no metodo create da classe SolicitacaoController.
publicStringcreate(){// implementa sua lógica// retorno que ira direcionar para nova_amostra.jspreturn"nova_amostra";}
<navigation-case>
<from-action>#{SolicitacaoController.create}</from-action>
<from-outcome>nova_amostra</from-outcome> // retorno do seu método
<to-view-id>/nova_amostra.jsp</to-view-id> // pagina para onde irá
</navigation-case>