【发布时间】:2014-08-29 00:21:05
【问题描述】:
我正在使用 struts 和 hibernate 开发应用程序。在这种情况下,我想在动作类的 jsp 页面中显示结果。从动作类列表存储信息和该列表应打印在 jsp 页面上。但是我只有一个 pojo 类,我的动作类和休眠映射是在同一个类中完成的。
index.jsp ->MusicAction->a.jsp
package action;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import com.opensymphony.xwork2.ActionSupport;
@Action(value="Music")
@javax.persistence.Entity
@Table(name="item")
@Results({
@Result(name="success",location="a.jsp"),
@Result(name="error",location="b.jsp")
})
public class MusicAction extends ActionSupport
{
@Id
private int item_no;
private String item_Name;
private String item_type;
private float item_price;
public int getItem_no() {
return item_no;
}
public void setItem_no(int item_no) {
this.item_no = item_no;
}
public String getItem_Name() {
return item_Name;
}
public void setItem_Name(String item_Name) {
this.item_Name = item_Name;
}
public String getItem_type() {
return item_type;
}
public void setItem_type(String item_type) {
this.item_type = item_type;
}
public float getItem_price() {
return item_price;
}
public void setItem_price(float item_price) {
this.item_price = item_price;
}
@Override
public String execute() throws Exception {
List l =getItem();
System.out.println("in execute"+l);
return "success";
}
public List getItem()
{
System.out.println("yah i m in getItem");
Session session=new AnnotationConfiguration().configure("hibernate.cfg.xml").buildSessionFactory().openSession();
Transaction t = session.beginTransaction();
MusicAction m = new MusicAction();
//System.out.println("configured");
Query query = session.createQuery("from MusicAction");
java.util.List list = query.list();
Iterator it=list.iterator();
while(it.hasNext())
{
m=(MusicAction)it.next();
System.out.println(m.getItem_no()+"| "+m.getItem_Name()+"\t|"+m.getItem_type()+"\t"+m.getItem_price());
}
t.commit();
session.close();
return list;
}
}
如何在 a.jsp 中访问该列表?
【问题讨论】:
-
你有什么问题?
-
嗨,MusicAction 类中的朋友,有一个包含值的列表。 & 如果 execute() 方法返回 true,则该值应显示在 jsp 页面上。
-
这不是问题,因为execute方法永远不会返回true。并且您没有 JSP 页面。
-
我想你没见过,我已经给出了路径如果execute()方法返回成功,控制转到a.jsp页面。
-
一个 Struts 动作不应该是一个实体,反之亦然。这是没有意义的。一个 Struts 动作应该获取和保存实体,并使视图可以访问它们。每次调用您的操作时重新配置 Hibernate 也是您真正不应该做的事情。会话工厂必须在整个应用程序期间创建一次,并且只创建一次。