bronx
Setembro 18, 2009, 4:56pm
#1
Olá a todos.
Tenho a seguinte situação: em uma de minhas jsps, ao clicar nos botões (<h:commandButton>), a action não é executada, e a página acaba simplesmente sendo recarregada (como se o action method fosse executado e retornado null).
O agravante é que, mesmo nos botoes que estão com o valor da action hard-coded, a navegação não funciona, sendo essa jsp recarregada novamente…=/
O mbean é instanciado normalmente, e o faces-config está configurado corretamente, pois em outras páginas funciona normalmente.
Logo, tudo me leva a crer que é algum problema com a jsp.
Estou usando richfaces e tomahawk, além dos componentes nativos do jsf, e em nenhuma dessas bibliotecas obtive sucesso. Nem mesmo com um commandLink.
Alguém já passou por isso?
Se puderem ajudar!!
Valeu!
Tchello
Setembro 18, 2009, 5:25pm
#2
Cara, posta seu ManagedBean, jsp e FacesConfig aqui!
De preferência só as partes que interessam do managedBean e FacesConfig, senão fica muito grande!
A JSP se nao for muito grande põe inteira por favor.
Abraços!
bronx
Setembro 18, 2009, 5:40pm
#3
Tá na mão:
faces-config:
<navigation-rule>
<from-view-id>*</from-view-id>
<navigation-case>
<from-outcome>shoppings</from-outcome>
<to-view-id>/Shoppings.jsp</to-view-id>
<redirect/>
</navigation-case>
</navigation-rule>
<navigation-rule>
<from-view-id>*</from-view-id>
<navigation-case>
<from-outcome>menu</from-outcome>
<to-view-id>/Home.jsp</to-view-id>
<redirect/>
</navigation-case>
<navigation-case>
<from-outcome>menuAdmin</from-outcome>
<to-view-id>/HomeAdmin.jsp</to-view-id>
<redirect/>
</navigation-case>
</navigation-rule>
(…)
<managed-bean>
<managed-bean-name>shoppingHandler</managed-bean-name>
<managed-bean-class>br.com.bronx.myproject.handler.ShoppingHandler</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
ShoppingHandler:
public String alteraShopping(){
for (int i = 0; i<10; i++){
System.out.println("Chamou o método alteraShopping()!!!! " + (i+1));
}
return "shoppings";
}
e a jsp:
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://richfaces.org/rich" prefix="rich" %>
<%@ taglib uri="http://richfaces.org/a4j" prefix="a4j" %>
<%@ taglib uri="http://myfaces.apache.org/tomahawk" prefix="t"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<link rel="stylesheet" type="text/css" href="css/header.css">
<link rel="stylesheet" type="text/css" href="css/style.css">
<link rel="stylesheet" type="text/css" href="css/cadastro.css">
<script type="text/javascript" src="js/alteraShopping.js"></script>
<title>MyProject - Alteração de Dados do Shopping</title>
</head>
<body>
<f:view>
<jsp:include page="templ/header.jsp"/>
<jsp:include page="templ/menuUsuario.jsp"/>
<h:form id="alteraShopping" enctype="multipart/form-data" onsubmit="return validaForm();">
<rich:panel id="alteracaoShopping" styleClass="main" headerClass="headerMain">
<f:facet name="header">
<h:outputText value="Alteração de Dados do Shopping"/>
</f:facet>
<t:div rendered="#{shoppingHandler.shopping != null}">
<t:div id="linhaNome" styleClass="linha">
<t:div styleClass="label">
<h:outputLabel value="Nome:"/>
</t:div>
<h:inputText value="#{shoppingHandler.shoppingAlteracao.nome}" id="txtNome" maxlength="255" size="50" styleClass="cadastroField" required="true" requiredMessage="* Nome obrigatório.">
<rich:toolTip followMouse="true" value="Nome atual: #{shoppingHandler.shopping.nome}"/>
</h:inputText>
<h:message for="txtNome" style="color:rgb(255,0,0);"/>
<span id="spanNome" class="spanStyle"> </span><br/>
</t:div>
<t:div id="linhaEndereco" styleClass="linha">
<t:div styleClass="label">
<h:outputLabel value="Endereço:"/>
</t:div>
<h:inputText value="#{shoppingHandler.shoppingAlteracao.rua}" id="txtEndereco" maxlength="255" size="50" styleClass="cadastroField" required="true" requiredMessage="* Endereço obrigatório.">
<rich:toolTip followMouse="true" value="Endereço atual: #{shoppingHandler.shopping.rua}"/>
</h:inputText>
<h:message for="txtEndereco" style="color:rgb(255,0,0);"/>
<span id="spanEndereco" class="spanStyle"> </span><br/>
</t:div>
<t:div id="linhaNumeroBairro" styleClass="linha">
<t:div styleClass="label">
<h:outputLabel value="Número:"/>
</t:div>
<h:inputText value="#{shoppingHandler.shoppingAlteracao.numero}" id="txtNumero" maxlength="30" size="10" styleClass="cadastroField" style="float:left;" required="true" requiredMessage="* Número obrigatório">
<rich:toolTip followMouse="true" value="Número atual: #{shoppingHandler.shopping.numero}"/>
</h:inputText>
<t:div styleClass="label" style="width:43px;">
<h:outputLabel value="Bairro:"/>
</t:div>
<h:inputText value="#{shoppingHandler.shoppingAlteracao.bairro}" id="txtBairro" maxlength="255" size="24" styleClass="cadastroField" required="true" requiredMessage="* Bairro obrigatório">
<rich:toolTip followMouse="true" value="Bairro atual: #{shoppingHandler.shopping.bairro}"/>
</h:inputText>
<h:message for="txtNumero" style="color:rgb(255,0,0);"/>
<h:message for="txtBairro" style="color:rgb(255,0,0);"/>
<span id="spanNumeroBairro" class="spanStyle"> </span><br/>
</t:div>
<t:div id="linhaComplemento" styleClass="linha">
<t:div styleClass="label">
<h:outputLabel value="Complemento:"/>
</t:div>
<h:inputText value="#{shoppingHandler.shoppingAlteracao.complemento}" id="txtComplemento" maxlength="255" size="50" styleClass="cadastroField">
<rich:toolTip followMouse="true" value="Complemento atual: #{shoppingHandler.shopping.complemento}"/>
</h:inputText>
<span class="spanStyle"> </span><br/>
</t:div>
<t:div id="linhaCidadeEstado" styleClass="linha">
<t:div styleClass="label">
<h:outputLabel value="Cidade:"/>
</t:div>
<h:inputText value="#{shoppingHandler.shoppingAlteracao.cidade}" id="txtCidade" maxlength="255" size="31" styleClass="cadastroField" style="float:left;" required="true" requiredMessage="* Cidade obrigatória">
<rich:toolTip followMouse="true" value="Cidade atual: #{shoppingHandler.shopping.cidade}"/>
</h:inputText>
<t:div styleClass="label" style="width:43px;">
<h:outputLabel value="Estado:"/>
</t:div>
<h:selectOneMenu value="#{shoppingHandler.shoppingAlteracao.estado}" id="comboEstado" styleClass="cadastroField" required="true" requiredMessage="* Estado obrigatório.">
<f:selectItem id="void" itemValue="" />
<f:selectItem id="Acre" itemLabel="AC" itemValue="AC"/>
<f:selectItem id="Alagoas" itemLabel="AL" itemValue="AL"/>
<f:selectItem id="Amapa" itemLabel="AP" itemValue="AP"/>
<f:selectItem id="Amazonas" itemLabel="AM" itemValue="AM"/>
<f:selectItem id="Bahia" itemLabel="BA" itemValue="BA"/>
<f:selectItem id="Ceara" itemLabel="CE" itemValue="CE"/>
<f:selectItem id="DistritoFederal" itemLabel="DF" itemValue="DF"/>
<f:selectItem id="EspiritoSanto" itemLabel="ES" itemValue="ES"/>
<f:selectItem id="Goias" itemLabel="GO" itemValue="GO"/>
<f:selectItem id="Maranhao" itemLabel="MA" itemValue="MA"/>
<f:selectItem id="MinasGerais" itemLabel="MG" itemValue="MG"/>
<f:selectItem id="MatoGrossoDoSul" itemLabel="MS" itemValue="MS"/>
<f:selectItem id="MatoGrosso" itemLabel="MT" itemValue="MT"/>
<f:selectItem id="Para" itemLabel="PA" itemValue="PA"/>
<f:selectItem id="Paraiba" itemLabel="PB" itemValue="PB"/>
<f:selectItem id="Pernambuco" itemLabel="PE" itemValue="PE"/>
<f:selectItem id="Piaui" itemLabel="PI" itemValue="PI"/>
<f:selectItem id="Parana" itemLabel="PR" itemValue="PR"/>
<f:selectItem id="RioDeJaneiro" itemLabel="RJ" itemValue="RJ"/>
<f:selectItem id="RioGrandeDoNorte" itemLabel="RN" itemValue="RN"/>
<f:selectItem id="Rondonia" itemLabel="RO" itemValue="RO"/>
<f:selectItem id="Roraima" itemLabel="RR" itemValue="RR"/>
<f:selectItem id="RioGrandeDoSul" itemLabel="RS" itemValue="RS"/>
<f:selectItem id="SantaCatarina" itemLabel="SC" itemValue="SC"/>
<f:selectItem id="Sergipe" itemLabel="SE" itemValue="SE"/>
<f:selectItem id="SaoPaulo" itemLabel="SP" itemValue="SP"/>
<f:selectItem id="Tocantins" itemLabel="TO" itemValue="TO"/>
</h:selectOneMenu>
<h:message for="txtCidade" style="color:rgb(255,0,0);"/>
<h:message for="comboEstado" style="color:rgb(255,0,0);"/>
<span id="spanCidadeEstado" class="spanStyle"> </span><br/>
</t:div>
<t:div id="linhaCEP" styleClass="linha">
<t:div styleClass="label">
<h:outputLabel value="CEP:"/>
</t:div>
<h:inputText value="#{shoppingHandler.shoppingAlteracao.cep}" id="txtCEP" maxlength="9" size="50" styleClass="cadastroField" style="float:left;" required="true" requiredMessage="* CEP obrigatório.">
<rich:toolTip followMouse="true" value="CEP atual: #{shoppingHandler.shopping.cep}"/>
</h:inputText>
<h:message for="txtCEP" style="color:rgb(255,0,0);"/>
<span id="spanCEP" class="spanStyle">Ex. CEP: 06543-210</span><br/>
</t:div>
<t:div id="linhaSite" styleClass="linha">
<t:div styleClass="label">
<h:outputLabel value="Site:"/>
</t:div>
<t:inputText value="#{shoppingHandler.shoppingAlteracao.site}" id="txtSite" maxlength="255" size="50" styleClass="cadastroField">
<rich:toolTip followMouse="true" value="Site atual: #{shoppingHandler.shopping.site}"/>
</t:inputText>
<span class="spanStyle"> </span><br/>
</t:div>
<t:div styleClass="linha">
<h:commandButton id="btnSalvar" action="#{shoppingHandler.alteraShopping}" style="margin-left:50px;" styleClass="radius" value="Salvar"/>
<h:commandButton id="btnLimpar" style="margin-left:10px;" styleClass="radius" value="Limpar" onclick="limpa()"/>
<t:commandButton id="btnCancelar" style="margin-left:10px;" styleClass="radius" value="Cancelar" action="shoppings"/>
</t:div>
<br/><br/><br/><br/>
</t:div>
<h:messages id="mensagens" globalOnly="true" layout="table" style="color:rgb(0,0,255);" errorStyle="color:rgb(255,0,0);" showDetail="false"/>
<t:div style="margin-top:10px;" rendered="#{shoppingHandler.shopping == null}">
<h:outputText value="É necessário selecionar um shopping na "/>
<a4j:commandLink action="shoppings" value="lista de shoppings!" onclick="cancela();"/>
</t:div>
</rich:panel>
</h:form>
</f:view>
</body>
</html>
olha, eu não acho que essas 2 coisas dem problema, mais na falta de outra coisa…
se o jsp exibiu numa boa então reconheceu a configuração do managed-bean, ou o problema é na navegação, no navigation-rule, ou essa função que vc chama no onsubmit do formulario ta interferindo de alguma forma…
faz ai 2 testes, primeiro, testa apenas tirando essa função ai do onsubmit do formulario, de validação… segundo, caso assim continue não funcionando, coloca o nome do seu jsp no primeiro navigation-rule… testa ai
LPJava
Setembro 19, 2009, 6:04am
#6
ver se um post simples como esse pode vc encontrar o seu problema.
jsf
abraco