Struts2迭代器属性值(不工作)

Struts2迭代器属性值(不工作),struts2,tags,Struts2,Tags,我试图使用struts迭代器从列表中写入一些数据。学生是我定义的一个班级。 与value属性一起使用时,s:property似乎根本不起作用 我在JSP中有以下代码: <s:iterator value="students" var="student"> <h2><s:property /></h2> <h2><s:property value="firstName" /></h2> &l

我试图使用struts迭代器从列表中写入一些数据。学生是我定义的一个班级。 与value属性一起使用时,s:property似乎根本不起作用

我在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类具有getFirstName()方法,如下所示:

String getFirstName() {
    return firstName;
}  
我正在使用Struts 2.1.6
日志文件中没有异常。
查看html源代码时,我只看到空的h2标记。
我不知道这里有什么问题。感谢您的帮助

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

换成

公共字符串getFirstName()

设置好了。

当您在迭代器标记中使用“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>


两者的工作原理相同。

它应该是一个公共方法。为了让OGNL访问您的域对象属性,访问器方法应该是公共的,这并不愚蠢。我有时还是这样。从现在起,这将是你寻找的第一件事。
<s:iterator value="students">
<h2><s:property value="firstName" /></h2>
</s:iterator>