Silva03
Fevereiro 6, 2008, 3:30pm
#1
Olá
Segue minha configuração do struts 2 quando executo o Login.jsp ele executa normamente, porem quando faço submit eu
gostaria de pegar o usuario e senha digidata em algum lugar do Login.java, porem siquer passa no meu system.out.println,
Alguem saberia me dizer porque?
Grato
=============================Jsp com o formulario========================
<%@ page contentType=“text/html; charset=UTF-8” %>
<%@ taglib prefix=“s” uri="/struts-tags" %>
Sign On
==================================Login.java=============================
package example;
public class Login extends ExampleSupport {
public String execute() throws Exception {
System.out.println("gostaria de pegar o usuario e a senha digitada:");
// if (isInvalid(getUsername())) return INPUT;
//if (isInvalid(getPassword())) return INPUT;
return SUCCESS;
}
private boolean isInvalid(String value) {
return (value == null || value.length() == 0);
}
private String username;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
private String password;
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
=======================example.xml================================================
<?xml version="1.0" encoding="UTF-8" ?>
<package name="example" namespace="/example" extends="struts-default">
<action name="HelloWorld" class="example.HelloWorld">
<result>/example/HelloWorld.jsp</result>
</action>
<action name="Login" method="{1}" class="example.Login">
<result name="input">/examples/Login.jsp</result>
<result type="redirect-action">Menu</result>
</action>
<action name="*" class="example.ExampleSupport">
<result>/example/{1}.jsp</result>
</action>
<!-- Add actions here -->
</package>
Falae!
Notei que no seu form está faltando o atributo ‘name’, provavelmente é em função disto que sua action não está conseguindo obter o atributo.
Lembre-se que o nome do atributo do form deve ser o mesmo da sua classe de action.
Segue um exemplo de um projeto que tenho aqui:
index.jsp (com form de login)
<s:form validate="true" cssClass="wufoo " action="checkLogin" theme="simple">
<ul>
<li id="liForm">
<label class="desc">Login</label>
<s:textfield name="usu.usuario" label="Usuário" cssClass="field text" required="true">Usuário: </s:textfield>
<s:password name="usu.senha" label="Senha" cssClass="field text" >Senha: </s:password>
<s:submit value="Entrar"/>
</li>
</ul>
</s:form>
classe de action:
[code]package br.com.sgvdba.actions;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
import org.apache.struts2.interceptor.SessionAware;
import br.com.sgvdba.jdo.Usu;
import br.com.sgvdba.jdo.UsuDAO;
import br.com.sgvdba.security.EncriptaSenha;
import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends ActionSupport implements SessionAware{
private static final long serialVersionUID = -300519118088286674L;
private Usu usu;
private Map<String, Object> map;
public String execute(){
if (hasActionErrors() || hasFieldErrors()){
return Action.INPUT;
}
else {
UsuDAO usuDAO = new UsuDAO();
Usu usu = new Usu();
String senhaCriptografada = EncriptaSenha.criptografar(this.usu.getSenha());
usu = usuDAO.findByLogin(this.usu.getUsuario(), senhaCriptografada);
this.usu = usu;
if (this.usu == null){
addActionError("Nome de usuário ou senha incorreta");
return Action.INPUT;
}
}
this.map.put("USUARIO_LOGADO", this.usu);
return Action.SUCCESS;
}
public final Usu getUsu() {
return usu;
}
public final void setUsu(Usu usu) {
this.usu = usu;
}
public String getCurrentDate(){
SimpleDateFormat dateFormat = new SimpleDateFormat();
dateFormat.applyPattern("dd/MM/yyyy");
return dateFormat.format(new Date()).toString();
}
@SuppressWarnings("unchecked")
public void setSession(Map map){
this.map = map;
}
}[/code]
No mais é isso, espero ter ajudado!
Abraços!!!