在程序上工作并尝试从另一个类中打印静态整数。奇怪的是我可以用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
因此,如您所见,仅代码的第一行和最后一行有效。如何在没有脚本的情况下打印出此静态变量?
在我的标题中
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);
}
}
最佳答案
您无需在jstl中调用getter。只是这样做
<c:out value="${Comments.commentCount}" />
假设您的变量名是
commentCount
而不是CommentCount
。即使没有
<c:out>
也可以使用Comments: ${Comments.commentCount} <br />
但使用
<c:out>
会更好,以避免here所述的跨站点脚本编写更新
在您提到的类中,没有名称为commentCount的字段。所以这行不通。您可以使用use 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 />
这应该工作。