一尘不染

如何将调用对象方法的JSP servlet转换为JSTL?

jsp

我刚刚开始在项目中使用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框架中的other变量,比如说NumberTwo.javatotalTwo作为内部的私有变量。并在此添加“
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) %>


阅读 302

收藏
2020-06-10

共1个答案

一尘不染

不幸的是,无法使用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。

2020-06-10