Retornando uma JSP ou JSF

11 respostas
shadowjava

olá amigos !

gostaria de criar no BB um metodo para retornar uma pagina , só que me deu branco para fazer este procedimento . alguem poderia me dar uma luz?

11 Respostas

T

ué, na verdade vc configura isso no seu faces-config.xml, correto? Lá está o seu fluxo de navegação entre as páginas…

shadowjava

não é bem pelo faces config não

no Bean estou criando os metodos !

então na minha pagina jsp estou fazendo um tratamento para um botão , e nesse botão eu queria chamar uma pagina jsf.

sei que dá pra fazer uma chamada pelo metodo só que esqueçi.

no faces config não sei se seria necessario.

porem , se vc tiver uma ideia pelo faces config me dá uma luz aí por gentileza.

eullerbd

Exemplo

<h:commandButton action="#{dados.submit}" />

Bean

public String submit() { instrucoes return "sucesso"; }

Faces Config

<navigation-rule> <from-view-id>/paginaInicial.jsp</from-view-id> <navigation-case> <from-outcome>sucesso</from-outcome> <to-view-id>/proximaPagina.jsp</to-view-id> </navigation-case> </navigation-rule>

Seria isto?

shadowjava

isso mesmo cara

só que fiquei com uma duvida no faces config , pois tem lá um sucess , então o que vai diferenciar entre todos os botões do site seria a id que estaria sendo direcionad correto? então teria que fazer uma modificação na tag ?

shadowjava

quais seriam as instruções ?

eu só queria clicar no botão e me retornar a pagina solicitada !

eullerbd

Bom, não entendi bem a pergunta, mas o que defini o fluxo de navegação neste caso é o retorno do seu método bean.

Exemplo

public String cadastrarCliente() { instrucoes return "sucesso"; }

<navigation-rule> <from-view-id>/cadCliente.jsp</from-view-id> <navigation-case> <from-outcome>sucesso</from-outcome> <to-view-id>/listaCliente.jsp</to-view-id> </navigation-case> </navigation-rule>

Ao executar o botão o JSF verifica o retorno do método no caso acima “sucesso” e executa a regra de navegação especificada no faces-config para o retorno “sucesso”.

Seria esta a sua dúvida?

shadowjava

amigo continuo na mesma

eu preciso saber quais são as instruções ! até pq eu só quero abrir uma pagina ao clicar no botão.

o procedimento é esse mesmo mas o que falta são as instruções .

queria como me ajudar?

eullerbd

coloca direto a string no action do button

eu coloquei instruções no caso de um cadastro, que executaria o metodo cadastrar, as intrucoes seriam conectar no banco de dados, inserir, etc.

Mas como você pretende somente abrir uma página coloque no seu button assim

<h:commandButton action=“pagina” />

e mapeie o fluxo de navegação no faces config.

<navigation-rule> <from-view-id>/paginaInicial.jsp</from-view-id> <navigation-case> <from-outcome>pagina</from-outcome> <to-view-id>/proximaPagina.jsp</to-view-id> </navigation-case> </navigation-rule>

austre

Neste mesmo nível de retornar uma página através de um método criado no Bean, eu tenho o seguinte

Código do Botão na página form.jsp

&lt;h:commandButton id="btnCancelar" value="Cancelar" action="#{ConsumidorBean.cancelar}"/&gt;

Código do Método no Bean

public String cancelar() throws Exception{ return "sucesso"; }

Definição de Navegação no faces-config.xml

&lt;navigation-rule&gt; &lt;from-view-id&gt;/Consumidor/form.jsp&lt;/from-view-id&gt; &lt;navigation-case&gt; &lt;from-outcome&gt;sucesso&lt;/from-outcome&gt; &lt;to-view-id&gt;/Consumidor/lista.jsp&lt;/to-view-id&gt; &lt;/navigation-case&gt; &lt;/navigation-rule&gt;

Aparentemente está tudo correto, certo?

Mas quando testo a página, ao clicar no botão cancelar o redirecionamento para a página lista.jsp não ocorre. O browser permanece na página lista.jsp.

Alguém saber o que pode ser, ou está vendo algum erro no código que postei?

:arrow: caso o shadowjava não tenha entendido as outras explicações, vou tentar explicar também. Quem faz acontecer o redirecionamento da página é a configuração no faces-config.xml. É neste arquivo que configuramos, a grosso modo: Ao receber um retorno igual a sucesso da página form.jsp, vá para a página lista.jsp

tikara

austre:
Neste mesmo nível de retornar uma página através de um método criado no Bean, eu tenho o seguinte

Código do Botão na página form.jsp

&lt;h:commandButton id="btnCancelar" value="Cancelar" action="#{ConsumidorBean.cancelar}"/&gt;

Código do Método no Bean

public String cancelar() throws Exception{ return "sucesso"; }

Definição de Navegação no faces-config.xml

&lt;navigation-rule&gt; &lt;from-view-id&gt;/Consumidor/form.jsp&lt;/from-view-id&gt; &lt;navigation-case&gt; &lt;from-outcome&gt;sucesso&lt;/from-outcome&gt; &lt;to-view-id&gt;/Consumidor/lista.jsp&lt;/to-view-id&gt; &lt;/navigation-case&gt; &lt;/navigation-rule&gt;

Aparentemente está tudo correto, certo?

Mas quando testo a página, ao clicar no botão cancelar o redirecionamento para a página lista.jsp não ocorre. O browser permanece na página lista.jsp.

Alguém saber o que pode ser, ou está vendo algum erro no código que postei?

:arrow: caso o shadowjava não tenha entendido as outras explicações, vou tentar explicar também. Quem faz acontecer o redirecionamento da página é a configuração no faces-config.xml. É neste arquivo que configuramos, a grosso modo: Ao receber um retorno igual a sucesso da página form.jsp, vá para a página lista.jsp

Cara, pelo que entendi, se você apertar o botão cancelar que está na página form.jsp ele vai enviar para a página lista.jsp
Pelo que está configurado no seu faces-config.xml o procedimento está certo.

austre

É verdade tikara. Está tudo certo. Encontrei o problema.

O que estava acontecendo era que nesta mesma página eu tenho dois SelectOneMenu dependentes, ou seja, o segundo é populado de acordo com a escolha do primeiro. Só que este segundo não possuia um SelectItem que fosse para quando se deseja selecionar vazio.

Quando eu submetia a página ai a página lista.jsp não era carregada porque existia um erro naquele objeto. Vou mostrar o código para deixar mais claro.

public List getTodosSistemas() throws Exception{ List sistemasJsf = new ArrayList(); List&lt;Sistema&gt; sistemas = new GerenciadorSistema().retornarSistemaByRegional(consumidor.getSistema().getRegional().getId()); sistemasJsf.add(new SelectItem("0", "")); for (Sistema elem : sistemas) { String id = Integer.toString(elem.getId()); sistemasJsf.add(new SelectItem(id, elem.getDescricao())); } return sistemasJsf; }

Este é o método do bean que popula o SelectOneMenu de acordo com a seleção feita em outro SelectOneMenu. Atente para a linha 04. Ela não existia antigamente, o que provocava o problema que relatei. Quando eu a adicionei ai o problema foi solucionado.

Entenda que este SelectOneMenu de Sistemas, sem a linha 04, não possui SelectItem algum quando acesso a página pela primeira vez. Só passava a conter SelectItem quando eu fazia a escolha no outro SelectOneMenu, mas mesmo assim não conseguia ir para a página lista.jsp através dos botões da form.jsp.

Criado 2 de junho de 2008
Ultima resposta 2 de jul. de 2008
Respostas 11
Participantes 5