Olá pessoal,
Comecei agora com Struts e segui um tutorial para fazer uma pequena aplicação, segui esse tutorial a risca .
Ao chamar uma Action, o browser retorna uma tela em branco, mas não apresenta erro no console. alguém poderia me esclarecer qual o possível problema?
Desde já agradeço,
[]s
[quote=“fabeen”]Olá pessoal,
Comecei agora com Struts e segui um tutorial para fazer uma pequena aplicação, segui esse tutorial a risca .
Ao chamar uma Action, o browser retorna uma tela em branco, mas não apresenta erro no console. alguém poderia me esclarecer qual o possível problema?
Desde já agradeço,
[]s[/quote]
que tutorial? (devem existir milhares espalhados por aí)
verifique se no final da Action não estaria retornando null (return null;)
a Princípio não, este é o meu código :
package teste.struts.action;
import javax.servlet.http.*;
import org.apache.struts.action.*;
import teste.struts.form.LoginForm;
public class Login extends Action {
public ActionForward execute(ActionForm form, ActionMapping map,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
LoginForm formulario = (LoginForm) form;
String usuario = formulario.getUsuario();
String senha = formulario.getSenha();
// 2 - Valida os dados
if (usuario.equals("") || !usuario.equals(senha)){
//Não são válidas
return map.findForward("erro");
}else {
return map.findForward("ok");
}
}
[size=“11”]
[color=“red”]
- Editado: Aumente as chances de alguém responder o seu tópico. Use BBCode em seus códigos para mantê-los identados e mais legíveis para outros usuários. - Matheus[/color][/size] :joia:
vc declarou os forwards no struts-config.xml ?
Sim, manja aí:
<?xml version=“1.0” encoding=“UTF-8”?>
<struts-config>
<!-- Form Bean Definitions -->
<form-beans>
<form-bean name="LoginForm" type="teste.struts.form.LoginForm"/>
</form-beans>
<!-- Action Mapping Definitions -->
<action-mappings>
<action path="/login" name="LoginForm" type="teste.struts.action.Login">
<forward name="ok" path="/ok.jsp"/>
<forward name="erro" path="/erro.jsp"/>
</action>
</action-mappings>
<!-- message resources -->
<message-resources parameter="MessageResources" />
</struts-config>
na sua pagina erro.jsp e ok.jsp tem alguma coisa?
talvez ele num teja achando nada pra mostrar.
Sim… está apenas descrevendo uma mensagem de sucesso ou erro…
certo…
poste aí o teu form, a action e o strutsconfig dentro da tag [code] pra gente ver onde ta o erro.
<!-- ::::::::::::::::::::::STRUTS-CONFIG ::::::::::::::::::::::: -->
<?xml version="1.0" encoding="UTF-8"?>
<struts-config>
<!-- Form Bean Definitions -->
<form-beans>
<form-bean name="LoginForm" type="teste.struts.form.LoginForm"/>
</form-beans>
<!-- Action Mapping Definitions -->
<action-mappings>
<action path="/login" name="LoginForm" type="teste.struts.action.Login">
<forward name="ok" path="/ok.jsp"/>
<forward name="erro" path="/erro.jsp"/>
</action>
</action-mappings>
<!-- message resources -->
<message-resources parameter="MessageResources" />
</struts-config>
<!-- ::::::::::::::::::WEB::::::::::::::::::::::::::::::: -->
<?xml version="1.0" encoding="UTF-8"?>
<web-app>
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>2</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>3</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- Action Servlet Mapping -->
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<!-- tag libs -->
<taglib>
<taglib-uri>/tags/struts-bean</taglib-uri>
<taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/tags/struts-html</taglib-uri>
<taglib-location>/WEB-INF/struts-html.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/tags/struts-logic</taglib-uri>
<taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/tags/struts-nested</taglib-uri>
<taglib-location>/WEB-INF/struts-nested.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/tags/struts-tiles</taglib-uri>
<taglib-location>/WEB-INF/struts-tiles.tld</taglib-location>
</taglib>
</web-app>
<!-- :::::::::::::::::::A CLASSE FORM ::::::::::::::::::::::::::::::: -->
package teste.struts.form;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
/**
*
* @author fabeen
*/
public class LoginForm extends ActionForm{
private String usuario;
private String senha;
public void setUsuario(String usuario){
this.usuario = usuario;
}
public void setSenha(String senha){
this.senha = senha;
}
public String getUsuario(){
return this.usuario;
}
public String getSenha(){
return this.senha;
}
}
<!-- :::::::::::::::::::::: A CLASSE ACTION::::::::::::::::::::::: -->
package teste.struts.action;
import javax.servlet.http.*;
import org.apache.struts.action.*;
import teste.struts.form.LoginForm;
public class Login extends Action {
public ActionForward execute(ActionForm form, ActionMapping map,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
LoginForm formulario = (LoginForm) form;
String usuario = formulario.getUsuario();
String senha = formulario.getSenha();
// 2 - Valida os dados
if (usuario.equals("") || !usuario.equals(senha)){
//Não são válidas
return map.findForward("erro");
}else {
return map.findForward("ok");
}
}
<!-- :::::::::::::::::::::::::::O FORM ::::::::::::::::::::::::::::::: -->
<%@ taglib uri="/tags/struts-bean" prefix="bean" %>
<%@ taglib uri="/tags/struts-html" prefix="html" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html:html locale="true">
<head>
<title><bean:message key="site.titulo"/></title>
</head>
<body>
<html:form action="/login" focus="usuario">
<bean:message key="pergunta.usuario" />
<html:text property="usuario" size="16"/> <br/>
<bean:message key="pergunta.senha" />
<html:password property="senha" size="16"/> <br/>
<html:submit>
<bean:message key="pergunta.enviar"/>
</html:submit>
<html:reset>
<bean:message key="pergunta.limpar"/>
</html:reset>
</html:form>
</body>
</html:html>
blz…
aqui na tua jsp, chame tua action assim:
<html:form action="login" focus="usuario">
sem a “/”
veja se da certo…
qq coisa poste aí…
fuiii… :brinde:
Xiii… funcionou não brother…
blz…
parece q teu código ta certo…
vamos a mais uma alternativa…
pelo q eu sei, o metodo execute de action, recebe como primeiro argumento o mapping e naum o form, como vc colocou:
public ActionForward execute(ActionForm form, ActionMapping map,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
tente assim:
public ActionForward execute(ActionMapping map, ActionForm form, HttpServletRequest req, HttpServletResponse res) throws Exception {
num sei, posso ta te falandu a maior besteira, mas tem uma grande chance de dar certo, vale a pena tentar, pq eu so uso assim e funciona.
Caramba, e num é que era isso mesmo…
Valews brother …
Obrigadão pela força…
[]s
falow…
vou te dar uma dica, pra vc nunca mais errar isso, rs…
se vc usar o eclipse, quando vc criar a classe, extenda ela a Action:
public class ExemploAction extends Action{
}
depois escreva “execute” e de um ctrl + espaço, dai é so dar um enter e mudar o nome dos argumentos, simples naum?
public class ExemploAction extends Action{
execute (ctrl + espaço)
}
qq coisa é só postar… :brinde:
Cara, o erro inicial que tava rolando é porque ele nao achou as paginas erro.jsp e ok.jsp, varifica qual pasta que esta pagina ta!
Ai vc muda no forward
<forward name="ok" path="/ok.jsp"/>
se estiver dentro de WEB-INF/JPS
vc muda pra:
<forward name="ok" path="WEB-INF/JPS/ok.jsp"/>
Olha lá!!