今天上午,在Struts2中,Action向JSP的数据传递遇到了问题。我想把Action从后台数据库获取的一个对象的列表传到JSP页面,然后通过JSP页面进行显示。
翻阅了好久,才找到了解决办法。
Model很简单,只有简单的几个属性。当然,get/set方法是必须的。
package com.sdkd.easybuy.model;
import java.util.Date;
/**
* EasybuyNews entity. @author MyEclipse Persistence Tools
*/
public class EasybuyNews implements java.io.Serializable {
// Fields
private Integer enId;
private String enTitle;
private String enContent;
private Date enCreateTime;
// Constructors
/** default constructor */
public EasybuyNews() {
}
/** full constructor */
public EasybuyNews(String enTitle, String enContent, Date enCreateTime) {
this.enTitle = enTitle;
this.enContent = enContent;
this.enCreateTime = enCreateTime;
}
// Property accessors
public Integer getEnId() {
return this.enId;
}
public void setEnId(Integer enId) {
this.enId = enId;
}
public String getEnTitle() {
return this.enTitle;
}
public void setEnTitle(String enTitle) {
this.enTitle = enTitle;
}
public String getEnContent() {
return this.enContent;
}
public void setEnContent(String enContent) {
this.enContent = enContent;
}
public Date getEnCreateTime() {
return this.enCreateTime;
}
public void setEnCreateTime(Date enCreateTime) {
this.enCreateTime = enCreateTime;
}
}
Action中将数据存入request或者session
public String list(){
newsList = ebNewsService.listNews();
if(newsList == null || newsList.size() == 0){
return "failure";
}
//request
HttpServletRequest request = ServletActionContext.getRequest();
request.setAttribute("newsList", newsList);
//session
//Map session = ActionContext.getContext().getSession();
//session.put("newsList", newsList);
return "success";
}
这样,在JSP中就可以获取list,并且用struts标签进行遍历。
<!--request方式-->
<s:iterator value="newsList" id="news">
<li><a href="news-view.jsp" target="_blank"><s:property value="enTitle"/></a></li>
</s:iterator>
<!--session方式-->
<s:iterator value="#session.newsList" var="news">
<li><a href="news-view.jsp" target="_blank"><s:property value="#news.enTitle"/></a></li>
</s:iterator>