Salve a tutti, sto provando a fare un server utilizzando Struts e Hibernate.
Ho seguito alcuni esempi trovati sul web ma sto avendo dei problemi.
In particolare sulla view non trovo i valori caricati dal DB nella corrispondente classe Action.
struts.xml
WelcomeUserAction.javacodice:<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <!-- il namespace è il nome da inserire dopo il server nella URL per richiamare le Action Login e Welcome --> <package name="test" namespace="/Test" extends="struts-default"> <action name="Login"> <result>pages/index.jsp</result> </action> <action name="Welcome" class="it.test.action.WelcomeUserAction" method="listPersonalData"> <result name="SUCCESS">pages/welcome_user.jsp</result> </action> </package> </struts>
qui la parte Hibernate sembra funzionare correttamente, infatti le print in listPersonalData mi tornano i dati attesicodice:package it.test.action; import java.util.ArrayList; import java.util.List; import org.apache.struts2.ServletActionContext; import org.hibernate.Session; import org.hibernate.SessionFactory; import it.test.listener.HibernateListener; import it.test.model.Personaldata; import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.ModelDriven; public class WelcomeUserAction extends ActionSupport implements ModelDriven<Personaldata> { private String username; private Personaldata pd = new Personaldata(); List<Personaldata> personalDataList = new ArrayList<Personaldata>(); public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } // all struts logic here public String execute() { return "SUCCESS"; } @Override public Personaldata getModel() { // TODO Auto-generated method stub return pd; } public List<Personaldata> getPersonaldataList() { if (personalDataList != null && personalDataList.size() > 0) { System.out.println("getPersonaldataLis -> size: "+personalDataList.size()); } else { System.out.println("getPersonaldataLis -> size 0"); } return personalDataList; } public void setPersonaldataList(List<Personaldata> customerList) { this.personalDataList = customerList; } public String listPersonalData() throws Exception{ System.out.println("listPersonalData START!"); //get hibernate session from the servlet context SessionFactory sessionFactory = (SessionFactory) ServletActionContext.getServletContext() .getAttribute(HibernateListener.KEY_NAME); System.out.println("listPersonalData sessionFactory creata!"); Session session = sessionFactory.openSession(); System.out.println("listPersonalData sessione aperta!"); personalDataList = session.createQuery("from Personaldata").list(); if (personalDataList != null && personalDataList.size() > 0) { for (int i=0; i<personalDataList.size(); i++) { Personaldata pd = (Personaldata)personalDataList.get(i); System.out.println(pd.getId()+" "+pd.getFirstName()+" "+pd.getLastName()+" "+pd.getCf()); } } else { System.out.println("listPersonalData nessun dato trovato!"); } session.close(); System.out.println("listPersonalData sessione chiusa!"); System.out.println("listPersonalData END!"); return "SUCCESS"; } } welcome_user.jsp
welcome_user.jsp
Qui però personalDataList risulta vuoto.codice:<%@ page contentType="text/html; charset=UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags"%> <html> <head></head> <body> <h1>Struts 2 Hello World Example</h1> <h2> Hello <s:property value="username" /> </h2> <h2> Elenco utenti <table border="1px" cellpadding="8px"> <tr> <th>Id</th> <th>Nome</th> <th>Cognome</th> <th>Codice Fiscale</th> </tr> <s:iterator value="personalDataList"> <tr> <td><s:property value="id" /></td> <td><s:property value="firstName" /></td> <td><s:property value="lastName" /></td> <td><s:property value="cf" /></td> </tr> </s:iterator> </table> </h2> </body> </html>
Probabilmente sto sbagliando qualcosa di molto banale.
Se qualcuno avesse un suggerimento sarebbe ben accetto.
Grazie
S.

Rispondi quotando