我正在尝试使用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标签
我想知道这里有什么问题。任何帮助表示赞赏。
答案 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>
两者都是一样的。