Foros del Web » Programación para mayores de 30 ;) » Java »

Srping - Struts - JSP

Estas en el tema de Srping - Struts - JSP en el foro de Java en Foros del Web. Buenas gente, hace poco empece a trabajar con Spring y Struts y estoy haciendo una pequeña aplicacion simple para aprender bien. Tambien guiandome por otra ...
  #1 (permalink)  
Antiguo 20/10/2011, 07:07
 
Fecha de Ingreso: febrero-2008
Mensajes: 42
Antigüedad: 16 años, 2 meses
Puntos: 0
Srping - Struts - JSP

Buenas gente, hace poco empece a trabajar con Spring y Struts y estoy haciendo una pequeña aplicacion simple para aprender bien. Tambien guiandome por otra aplicaciones.. y me estoy quedando sin ideas de como hacer andar esto.

El caso es simple.

1- Estoy inyectando un bean OpsSimpleCustomerAction, al cual le inyecto otro bean opsAppRepository.

Código:
    <bean id="Repository" class="com.xxx.ddd.webapp.repositories.Repository">
        <property name="theClient" ref="theClient"/>
    </bean>

     <bean id="SimpleCustomerAction" class="com.xxx.ddd.webapp.actions.SimpleCustomerAction">
        <property name="Repository" ref="Repository" />
    </bean>
2- Luego en el archivo de Struts defino esta accion:

Código:
        <action name="simplecustomer" class="com.xxx.ddd.webapp.actions.SimpleCustomerAction">  
			<result type="json">/jsp/simpledata.jsp</result>
		</action>
3- Bueno la clase SimpleCustomerAction:

Código:
public class SimpleCustomerAction extends ActionSupport implements SessionAware{
    private OpsAppRepository repository;
    private List<CustomerTeam> data;
    private int recordsnumber = 0;
    private Map session;
    
    public void setOpsAppRepository(OpsAppRepository repository) {
    	this.repository = repository;
    }
    
    public int getRecords () {
    	return this.recordsnumber;
    }
    
    public void setRecords (int a) {
    	this.recordsnumber = a;
    }
    
	public void setSession(Map session) {
	    this.session = session;
	}

	public Map getSession() {
		return this.session;
	}
	
    @Override
    public String execute() {
    	this.setRecords(this.loadData());
    	return SUCCESS;
    }
    
	protected int loadData() {
		//opsapp.customerteam.session.state
		if (this.session.containsKey(AppConstants.APP_CUSTOMERTEAM_SESSION_STATE)) {
			this.data = (List<CustomerTeam>)this.session.get(AppConstants.APP_CUSTOMERTEAM_SESSION_STATE);
		} else {
			this.data = this.repository.getCustomerTeamList();
			this.session.put(AppConstants.APP_CUSTOMERTEAM_SESSION_STATE, this.data);
		}
        return this.data.size();
	}
}
Bueno en esta clase.. lo que simeplemente hago es sacar la informacion del repositorio. Esto funciona perfecto. De hecho, como vieron en el archivo Strtus.xml, hago que esto devuelva un json, y en el archivo que me devuelve el browser, se encuentra toda la informacion. Lo mismo que cuando lo debuggeo.

Y aqui el problema. Que estoy seguro que esta en el jsp y no se como resolver.

4- Este es el archivo jsp.

<jsp:useBean id="OpsSimpleCustomerAction" class="com.tangoe.synergy.webapp.actions.OpsSimple CustomerAction" scope="session"/>

<html>
<body>
Records: <%= OpsSimpleCustomerAction.getRecords() %> <br/>
</body>
</html>

Por lo que pienso y compruebo. Aca estoy creando un nuevo bean y por ende salteandome toda la definicion que provee Spring. Por lo que, una vez que se ejecuta la clase SimpleCustomerAction, hasta cuando se ejecuta execute y antes de return success, todo funciona bien. El tema es que despues de retornar succsess y cuando lo llamo desde el jsp, pierdo toda la informacion.

Seguramente es por que en el jsp estoy definiendo un bean diferente, y por ende tengo otro objeto diferente.

En fin, lo que simeplemente trato de hacer es: Mostrar recordsnumber en ese jsp. Utilizando el mismo bean que usa Spring/Strut y no crear uno nuevo (en el cual tengo mal la informacion.).

Alguna idea?, gracias de ante mano!.. y corrijanme si tengo mal alguno de mis pensamientos.

Etiquetas: jar, jsp, struts, aplicaciones
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:45.