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

标签 java jsp jstl

我刚刚开始在我的项目中使用 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.javatotalTwo作为内部的私有(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/

相关文章:

java - mysql 结果未使用 java applet 正确写入文件

java - Java中如何获取网页及其子页面的所有链接

java - 在 Drools 和 Optaplanner 中做数学题

java - 方法不会覆盖或实现父类(super class)型的方法

javascript - 如何仅在jsp中从mysql上传图像到网络上

java - NullPointerException 尝试设置index.jsp

java - 需要关于是否保留此代码的建议

Java 8 JSTL 和 saxParseException

java - 将 x-taglib 与 c-taglib 结合在 <x :set> and <c-foreach> 上

java - jSTL标签需要哪个spring jar文件