Struts2 Iterator属性值(不工作)

时间:2012-01-22 14:03:06

标签: struts2 tags

我正在尝试使用struts迭代器从List中写入一些数据。学生是我定义的课程。 与value属性一起使用时,s:属性似乎根本不起作用。

我在JSP中有以下代码:

<s:iterator value="students" var="student">
    <h2><s:property /></h2>
    <h2><s:property value="firstName" /></h2>
    <h2><s:property value="student.firstName" /></h2>
    <h2><s:property value="top.firstName" /></h2>
    <h2><s:property value="[0].firstName" /></h2>
    <h2><s:property value="#firstName" /></h2>
</s:iterator>  

在第一个属性标签上工作。它打印Student对象的toString()。所有其他属性标签根本不打印任何内容。

Student类的toString()方法如下:

public String toString() {
    return firstName + " " + lastName + " " + Integer.valueOf(age);
}

Student类具有getFirstName()方法,如下所示:

String getFirstName() {
    return firstName;
}  

我正在使用Struts 2.1.6
日志文件中没有例外。
查看html源代码时,我只看到空的h2标签 我想知道这里有什么问题。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:1)

您的getFirstName()方法仅具有包级访问权限。它应该是公开的,可以从JSP访问。

将其更改为

public String getFirstName()

然后你就定了。

答案 1 :(得分:0)

当您在迭代器标记中使用“var”属性时,您必须引用对象中的值,如

<s:iterator value="students" var="student">
<h2><s:property value="#student.firstName" /></h2>
</s:iterator>

您可以编写相同的代码,而无需使用下面的

之类的var属性
<s:iterator value="students">
<h2><s:property value="firstName" /></h2>
</s:iterator>

两者都是一样的。