You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:55:08