在JSP页面使用Struts 2从数据库获取日期数据不显示求助
解决Struts2 JSP无法展示后台数据的问题
嘿,我看你后台已经成功从数据库拿到数据了,但JSP页面就是不显示,结合你贴的代码,大概率是数据没正确传到Struts2的ValueStack里,或者JSP没正确遍历集合,我给你一步步排查解决:
1. 给Action里的userBeans添加Getter方法
Struts2的标签是靠OGNL访问ValueStack里的属性的,你后台把数据放到userBeans这个List里了,但如果Action里没给这个List加public的getter方法,JSP根本拿不到它。赶紧补上:
// 假设你的Action里已经定义了这个List private List<ResverstionBean> userBeans = new ArrayList<>(); // 必须加这个getter,缺一不可! public List<ResverstionBean> getUserBeans() { return userBeans; }
2. JSP里要遍历集合才能获取单个Bean的属性
你现在的JSP代码直接写<s:date name="arrdate"...>,这只有当ValueStack栈顶是单个ResverstionBean对象时才有用,但你后台是把一堆Bean放到List里的,所以必须用<s:iterator>来遍历这个List:
<!-- 遍历userBeans里的每个ResverstionBean实例 --> <s:iterator value="userBeans"> <s:date name="arrdate" format="dd/MM/yyyy" /> <s:date name="depdate" format="dd/MM/yyyy" /> <s:property value="roomno"/> <s:property value="states"/> <br/> <!-- 加个换行区分每条数据 --> </s:iterator>
3. 检查ResverstionBean的属性是否有Getter方法
Struts2标签要访问Bean的属性,必须要有对应的getter方法才行!比如你的arrdate、depdate这些属性,Bean里得有:
public class ResverstionBean { private Date arrdate; private Date depdate; private int roomno; private boolean states; private int id; // 给每个属性加getter,boolean类型的可以用is开头 public Date getArrdate() { return arrdate; } public Date getDepdate() { return depdate; } public int getRoomno() { return roomno; } public boolean isStates() { return states; } // 你的setter已经有了,这里确保getter都存在就行 }
4. 额外排查小技巧:用<s:debug>查看ValueStack
要是还没解决,就在JSP里加个<s:debug>标签,它会帮你展示ValueStack里的所有内容,你可以看看userBeans有没有在里面,里面的Bean属性是不是都正确,这样能快速定位问题:
<s:debug />
按照这几步来,应该就能让数据正常显示在JSP页面了!
内容的提问来源于stack exchange,提问作者Sonu Gupta
相关产品推荐
相关产品推荐

