我刚刚开始在项目中使用JSTL,但是很遗憾地说这确实让我感到困惑。
我原来用 Number.java
Number.java
package com.mycompany public class Number { private int total; public static int add (int x, int y) { return total; }
在showNumber.jsp我可以使用
showNumber.jsp
<%@page import= "com.mycompany.Number" %>
和内联使用 <%= Number.add(5,6) %>
<%= Number.add(5,6) %>
我该如何重写这一部分JSTL?也可以导入该类Number.java吗?我尝试了很多不同的方法,例如<c:out value="${Number}.add(5,6)" />,但仍然找不到解决方案。谢谢。
JSTL
<c:out value="${Number}.add(5,6)" />
编辑:我使用@Victor的方法,它确实起作用。就我而言,我需要重用spring框架中的other变量,比如说NumberTwo.java并totalTwo作为内部的私有变量。并在此添加“ 100” totalTwo。
NumberTwo.java
totalTwo
对于我需要使用的src是<spring:param name="secondNumber" value ="${NumberTwo.totalTwo}" />。
<spring:param name="secondNumber" value ="${NumberTwo.totalTwo}" />
然而,凭直觉我习惯了(int) pageContext.getAttribute("NumberTwo.totalTwo"),它总是让我回头null。
(int) pageContext.getAttribute("NumberTwo.totalTwo")
null
另一个解决方法是先<c:set var="result" value="${NumberTwo.totalTwo}" /> 然后<% String result = (String) pageContext.getAttribute("result"); %> 再<%= Number.add(result, 100) %>
<c:set var="result" value="${NumberTwo.totalTwo}" />
<% String result = (String) pageContext.getAttribute("result"); %>
<%= Number.add(result, 100) %>
不幸的是,无法使用JSTL任意调用方法,JSTL的功能非常有限:http : //docs.oracle.com/javaee/5/tutorial/doc/bnalg.html。但是仍然可以使用 Number 类。这里的解决方法:
<%@page import= "com.mycompany.Number" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <% pageContext.setAttribute("addResult", Number.add(7, 8)); %> <html> <body> JSP 1.x: Result is: <c:out value="${addResult}" /><br/> JSP 2.x: Result is: ${addResult} </body> </html>
使用 pageContext.setAttribute() ,方法结果存储在页面上下文中,并且JSTL标记可以访问存储在该上下文中的值(属性)。
注意:第二条输出行“ 结果是:$ {result} ”仅适用于JSP 2 afaik。