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
codice:
<?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>
WelcomeUserAction.java
codice:
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
qui la parte Hibernate sembra funzionare correttamente, infatti le print in listPersonalData mi tornano i dati attesi
welcome_user.jsp
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>
Qui però personalDataList risulta vuoto.
Probabilmente sto sbagliando qualcosa di molto banale.
Se qualcuno avesse un suggerimento sarebbe ben accetto.
Grazie
S.