El caso es simple.
1- Estoy inyectando un bean OpsSimpleCustomerAction, al cual le inyecto otro bean opsAppRepository.
Código:
2- Luego en el archivo de Struts defino esta accion:<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>
Código:
3- Bueno la clase SimpleCustomerAction:<action name="simplecustomer" class="com.xxx.ddd.webapp.actions.SimpleCustomerAction"> <result type="json">/jsp/simpledata.jsp</result> </action>
Código:
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. 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(); } }
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.