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?
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?
ué, na verdade vc configura isso no seu faces-config.xml, correto? Lá está o seu fluxo de navegação entre as páginas…
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.
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?
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 ?
quais seriam as instruções ?
eu só queria clicar no botão e me retornar a pagina solicitada !
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?
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?
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>
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
<h:commandButton id="btnCancelar" value="Cancelar" action="#{ConsumidorBean.cancelar}"/>
Código do Método no Bean
public String cancelar() throws Exception{
return "sucesso";
}
Definição de Navegação no faces-config.xml
<navigation-rule>
<from-view-id>/Consumidor/form.jsp</from-view-id>
<navigation-case>
<from-outcome>sucesso</from-outcome>
<to-view-id>/Consumidor/lista.jsp</to-view-id>
</navigation-case>
</navigation-rule>
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
Neste mesmo nível de retornar uma página através de um método criado no Bean, eu tenho o seguinteCódigo do Botão na página form.jsp
<h:commandButton id="btnCancelar" value="Cancelar" action="#{ConsumidorBean.cancelar}"/>Código do Método no Bean
public String cancelar() throws Exception{ return "sucesso"; }Definição de Navegação no faces-config.xml
<navigation-rule> <from-view-id>/Consumidor/form.jsp</from-view-id> <navigation-case> <from-outcome>sucesso</from-outcome> <to-view-id>/Consumidor/lista.jsp</to-view-id> </navigation-case> </navigation-rule>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.
É 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<Sistema> 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.