处理程序并尝试从另一个类打印静态整数。奇怪的是我可以使用scriptlet,但不能使用JSTL。看看我刚写的错误检查代码。
Comments: <%=Comments.getCommentCount() %> <br />
Comments: ${Comments.getCommentCount()} <br />
Comments: <c:out value="${Comments.getCommentCount()}" /> <br />
Comments: <c:out value="1" />
这给了我一个HTML输出
Comments: 5 <br />
Comments: <br />
Comments: <br />
Comments: 1
因此,您只能看到第一行和最后一行代码的工作原理。如何在没有scriptlet的情况下打印出这个静态变量?
在我的标题中我有
import="org.test.Comments"
Comments.java
package org.test;
import java.util.ArrayList;
import java.util.Collections;
public class Comments
{
private String name = "";
private String comment = "";
private static ArrayList<String> allComments = new ArrayList<String>();
public void setNewComment(String name, String comment)
{
this.name = name;
this.comment = comment;
allComments.add(getComment());
}
public static ArrayList<String> getCommentList()
{
Collections.reverse(allComments);
return allComments;
}
public static int getCommentCount()
{
return allComments.size();
}
public String getComment()
{
return String.format("Name: %s <br />Comment: %s <p><hr /></p>", name, comment);
}
}
答案 0 :(得分:4)
您无需在jstl中调用getter。就这样做
<c:out value="${Comments.commentCount}" />
假设您的变量名称为commentCount
而不是CommentCount
。
即使没有<c:out>
Comments: ${Comments.commentCount} <br />
但使用<c:out>
会更好,以避免跨网站脚本编写,如here所述
<强>更新强>
在您提到的课程中,没有名称为commentCount的字段。所以它不会起作用。您可以使用jsp fn标签直接在jsp中获取集合的大小。
将其包含在标题
中 <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
然后执行此操作:
<c:out value="${fn:length(allComments)}" />
或
Comments: ${fn:length(allComments)} <br />
这应该有用。
答案 1 :(得分:0)
如果要使用静态方法,则可以使用自定义EL函数。 查看页面底部附近的https://stackoverflow.com/tags/el/info。