【问题标题】:JSP c:forEach error: property not foundJSP c:forEach 错误:找不到属性
【发布时间】:2013-02-07 18:28:15
【问题描述】:

这是我长期面临但无法解决的奇怪问题。希望这里有人能指出我的错误。非常感谢。

基本上,我在 JSP 中使用 c:forEach 标记来循环遍历属性。但是,模型类中的列表属性显示“找不到属性错误”。这是模型类中的属性代码:

private String stnID = new String();
private String stnShortName = new String();
private String stnDesc = new String();
private List<RailDeviceInfo> railDeviceInfoList = new ArrayList<RailDeviceInfo>();

而且我知道 JSP 只能使用 getter 方法,这是我的列表属性的 getter:

public List<RailDeviceInfo> getDeviceList()
{
    return this.railDeviceInfoList;
}

最后,这是我的 JSP 代码:

<c:forEach items="${railList}" var="station">
   <c:out value="${station.stnID}" />
   <c:out value="${station.stnShortName}" />
   <c:out value="${station.stnDesc}" />

   <c:forEach items="${station.railDeviceInfoList}" var="device">
       <!-- can not found station.railDeviceInfoList -->
       <c:out value="${device.id}" />
       <c:out value="${device.name}" />
   <c:forEach>

</c:forEach>

【问题讨论】:

    标签: jsp


    【解决方案1】:

    你的getter是getDeviceList(),所以属性是deviceList,而不是railDeviceInfoList

    <c:forEach items="${station.deviceList}" var="device">
    

    EL 不关心您班级的私有字段。它关心它的 JavaBean 属性。

    【讨论】:

    • 非常感谢 JB Nizet!我学习了新东西。我认为 EL 关心模型类的私有领域。
    【解决方案2】:

    jstl 在您的情况下找到 getRailDeviceInfoList() 方法 但它不存在。 你应该使用 station.deviceList 而不是 station.railDeviceInfoList

    【讨论】:

    • 是的,nrvmodi。 JB Nizet 和你都是对的。我太书呆子了,不能那样编程。
    猜你喜欢
    • 2019-02-06
    • 2019-03-08
    • 2014-06-24
    • 1970-01-01
    • 2011-09-05
    • 1970-01-01
    • 2020-08-25
    • 2016-09-22
    相关资源
    最近更新 更多