lunes, julio 23, 2007

Struts 2 - ServletRequestAware y SessionAware

Me han pedido un ejemplo del uso de ServletRequestAware, así que aquí va el action correpondiente usando sesiones y el request.
Prometo para una próxima entrega, la manipulación de archivos.
Pueden copiar la clase directamente al proyecto de "Struts 2 - Round 1", no debería ser complicado para nada. Perdón por el código sin tabulaciones, no encuentro la forma de mostrar código en blogger, tal vez alguno me pueda ayudar.


package prueba;

import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.SessionAware;
import business.User;
import com.opensymphony.xwork2.ActionSupport;

public class Login extends ActionSupport implements SessionAware, ServletRequestAware{

private String usuario;
private String password;
private Map sesion;
private HttpServletRequest request;

@Override
public String execute() throws Exception {
User user = new User();
user.setName(usuario);
user.setPassword(password);

//sesion se llena automáticamente
//con el método setSession(Map m)
sesion.put("_USER", user);

//request se llena automáticamente
//con el método setServletRequest(...)
String btn = request.getParameter("btnAceptar");

//Si lo valido correctamente...
if(true){
addActionMessage("Este es un ActionMessage de SUCCESS");
addActionMessage("El botón presionado es: "+btn);
return SUCCESS;
}
return ERROR;
}

public String getUsuario() {
return usuario;
}
public void setUsuario(String usuario) {
this.usuario = usuario;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}

//Agregado al implementar SessionAware
@Override
public void setSession(Map s) {
sesion = s;
}

//Agregado al implementar ServeltRequestAware
@Override
public void setServletRequest(HttpServletRequest request) {
this.request = request;
}
}

Saludos

5 Comments:

At 7:49 p. m., Anonymous Anónimo said...

Gracias Viejo!! la verdad nunca trabaje con un framework, y la verdad me esta costando entender la logica de Struts 2.. Pero ya le agarre la mano a la sesion por lo menos!!
Un abrazo!

 
At 6:13 p. m., Blogger Daniel said...

Me queda una duda, cuando haces:
String btn = request.getParameter("btnAceptar");

El string "btnAceptar", se lo pones como name al submit?
Porque revisé el código y no lo encontré.

Gracias

 
At 10:53 a. m., Anonymous Anónimo said...

Buenas,
No tienes que instanciar el objeto sesion???
A mi me está cascando un Nullpointer al hacer el put, ya que el objeto sesion de SessionAware viene a null

 
At 6:25 a. m., Blogger Ana said...

Hola buenos días estoy trabajando en un proyecto con portlet lifeRAY + struts2 + display table
tengo una MiaccionAction extends ActionSupport y dejo en la sesion una lista de esta manera sesion.put("emplP", listaE)
se que tiene valores porq la recojo y la recorro en la JSP DE esta manera
.....
el problema está q. necesito mostrar los datos en un
y no lo muestra tengo todas las librerias de display table y todo... xq si me creo mi lista en la JSP ...DE esta manera ..
<% List testData = new ArrayList(); .....
Map map7 = new TreeMap();
map7.put( "id", "7" );
map7.put( "firstName", "lola" );
map7.put( "email", "JOOOOOOOcaracola@gm.com" ); testData.add( map7 );
session.setAttribute( "testdata", testData ); %>
SI Q. LA PINTA ...
osea si me creo la lista en mi pagina y la meto en la session.setA...si funciona ...pero si en mi action la meto con sesion.put.... no lo encuentra...
¿Alguien sabe x donde van los tiros...? cuando no estaba en portlet SI ..funcionaba ...
pero ahora debe funcionA con portlet y debe ser q. las sesiones son distintas???
COmo implemento x favor el SESSIONSCOPE??? AYUDA POR FAVOR

 
At 3:49 p. m., Anonymous Dx9 said...

Buen post :) Bastante util!

 

Publicar un comentario

<< Home