我刚刚开始在我的项目中使用 JSTL,但很抱歉,这让我感到很困惑。
我最初使用Number.java
package com.mycompany
public class Number {
private int total;
public static int add (int x, int y) {
return total;
}
在 showNumber.jsp
我可以使用
<%@page import= "com.mycompany.Number" %>
和内联使用<%= Number.add(5,6) %>
如何重写 JSTL
中的这一部分?
是否也可以导入类 Number.java
?
我尝试了很多不同的事情,例如<c:out value="${Number}.add(5,6)" />
,但仍然找不到解决办法。谢谢。
编辑:
我使用@Victor的方法,它确实有效。就我而言,我需要重用 Spring 框架中的其他变量,例如 NumberTwo.java
和totalTwo
作为内部的私有(private)变量。并将“100”添加到此 totalTwo
.
对于我需要使用它的src是<spring:param name="secondNumber" value ="${NumberTwo.totalTwo}" />
.
但是,直觉上我使用了 (int) pageContext.getAttribute("NumberTwo.totalTwo")
,它总是返回我 null
.
另一个解决方法是
第一<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 is: ${result}”仅适用于 JSP 2 afaik。
关于java - 如何将调用对象方法的 JSP servlet 转换为 JSTL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9528849/