我在课堂上有这些方法:
public HarfDate getHarfTo() {
return to;
}
我只是想知道如何在JSTL中调用它,因为我试图这样称呼它:
${exam.getHarfTo()}
但它不起作用!!
注意:考试是包含这些方法的类的实例
答案 0 :(得分:8)
exam
对象的实例必须位于EL范围内,例如pageScope
。假设在pageScope中将exam
对象引用称为“检查”,则以下EL将调用getHarfTo
方法:
${exam.harfTo}
注意:您无法调用setter方法。
为了扩展上面的内容(仅作为示例),我们可以使用scriptlet在exam
中设置pageScope
实例(请注意,不建议使用scriptlet这只是一个澄清的示例)< / p>
<%
com.example.Exam exam = new com.example.Exam();
pageContext.setAttribute("exam", exam, PageContext.PAGE_SCOPE);
%>
现在我们可以通过EL访问考试对象:$ {exam.harfTo}
可以将考试对象添加到其他范围,例如请求范围和会话范围。
Scriptlets和EL
<%
java.util.ArrayList cities = new java.util.ArrayList();
cities.add("NYC");
cities.add("SFO");
%>
EL无法直接访问在scriptlet中创建的变量。因此,cities变量不能用于JSTL标记。
为此,我们首先需要将其放在某个范围内。例如:
<%
java.util.ArrayList cities = new java.util.ArrayList();
cities.add("NYC");
cities.add("SFO");
pageContext.setAttribute("cities", cities, PageContext.PAGE_SCOPE);
%>
这使得city引用的对象变量,pageScope
中的“城市”名称可用。
<select name="Cities">
<c:forEach var="city" items ="${cities}">
<option> ${city}</option>
</c:forEach>
</select>
现在可以访问cities变量。 您不能将scriptlet作为EL表达式的属性。
<select name="Cities">
<%for(int i = 0; i < cities.size(); i++) {%>
<option>${cities[<%=i%>]}</option>
<%}%>
</select>
如果考试类符合bean惯例,您可以使用标准操作:
<jsp:useBean id="exam" class="com.example.Exam" scope="pageScope"/>
The value return by the method called harfTo: <jsp:getProperty name="exam" property="harfTo"/>
别忘了导入JSTL标签lib:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix ="c" %>
编辑:
如果你有一个包含exams
个对象的集合exam
,那么你可以使用JSTL迭代那样的集合,如下所示:
<c:forEach var="exam" items ="${exams}">
${exam.harfTo}
</c:forEach>
答案 1 :(得分:1)
答案 2 :(得分:-1)
要访问该方法,您只需剥离获取部分。
${exam.harfTo}
如果你想调用类的setter方法,那么同样有用。