我正在JSP中创建一个简单的留言簿,以便学习这项技术.目前我有两个类:guestbook/GuestBook.class和guestbook/Entry.class(我还没有完成应用程序,所以我只有这些类),这些类被添加到WEB-INF/libs /中并且它们被正确包含在内.在我的文件index.jsp中我使用的是guestbook.GuestBook类; 它的方法返回Vector.当我迭代条目并且我想打印条目的作者时,我可以看到:
javax.el.PropertyNotFoundException: Property 'author' not found on type guestbook.Entry
Run Code Online (Sandbox Code Playgroud)
我必须补充一点,Entry类是public,author属性是这样声明的:
public String author;
Run Code Online (Sandbox Code Playgroud)
所以它也是公开的.当我遍历条目时,这是我的代码:
<c:forEach items="${entries}" varStatus="i">
<c:set var="entry" value="${entries[i.index]}" />
<li><c:out value="${entry.author}" /></li>
</c:forEach>
Run Code Online (Sandbox Code Playgroud)
和
entry.class.name
Run Code Online (Sandbox Code Playgroud)
返回guestbook.Entry
这些类在包留言簿中(您可以猜到),条目向量传递给pageContext.
我不知道我的做法有什么问题.有人可以帮我吗?(提前致谢!)
JSP EL不会识别类中的公共字段,它只适用于getter方法(无论如何这都是好的做法 - 永远不要将类的状态暴露为像这样的公共字段).
所以使用
private String author;
public String getAuthor() {
return author;
}
Run Code Online (Sandbox Code Playgroud)
代替
public String author;
Run Code Online (Sandbox Code Playgroud)
另外,您的JSTL过于复杂,可以简化为:
<c:forEach items="${entries}" var="entry">
<li><c:out value="${entry.author}" /></li>
</c:forEach>
Run Code Online (Sandbox Code Playgroud)
甚至
<c:forEach items="${entries}" var="entry">
<li>${entry.author}</li>
</c:forEach>
Run Code Online (Sandbox Code Playgroud)
虽然后一种形式不会将XML转义为作者名称,因此不建议使用.
最后,Vector该类已过时,您应该使用ArrayList.
| 归档时间: |
|
| 查看次数: |
7798 次 |
| 最近记录: |