jsp - JSP EL 有 eval 函数吗?

标签 jsp eval el

我正在寻找一种在 JSP 页面中输出字符串时将字符串计算为 el 的方法。 (我猜当它的 toString() 方法在引擎盖下被调用时???)

例如,在我的页面中,如果我这样做:

<title>${bean.title}</title>

title 将是 bean 的一个属性,它将返回一个字符串。我想在 bean.title 中存储其他 EL 表达式,以便对它们进行评估。

所以,如果 bean.title = "This is the ${param.pageType} page ",显然会在它被写入页面之前进行评估。

有没有办法做到这一点?

最佳答案

您实际上是在错误的方向上寻找解决方案。您应该使用 JSTL fmt taglib为了这。支持parameterized消息也是如此。您应该只更改代码以将消息存储在(可国际化的).properties 中文件而不是在 bean 中。
假设您在 text.properties 中有以下键值条目放置在 com.example.i18n 中的文件包裹

title = This is the {0} page

then you can use it as follows

<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<fmt:setBundle basename="com.example.i18n.text" />
...
<title>
    <fmt:message key="title">
        <fmt:param value="${param.pageType}" />
    </fmt:message>
</title>
它遵守 MessageFormat API 的规则.
也可以看看:
  • How to internationalize a Java web application? - 小教程
  • 关于jsp - JSP EL 有 eval 函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5756938/

    相关文章:

    java - 3d数组处理JSP页面时发生异常

    java - 无法触及异常的根本原因

    javascript - 使用 eval() 执行用户提供的代码有问题吗?

    PHP 函数和变量以字符串形式存储在数据库中

    java - 使用 Thymeleaf 在 EL 表达式中进行类型转换

    jsp - 直接在EL中访问Java类的字段

    java - 使用 JDBC 和 JSP 的 UPSERT MYSQL 命令

    java - 如何显示发布到我的论坛中的答案数量?

    clojure - Clojure 中带有闭包和 eval 的函数

    jsp - EL 将使用哪个范围(应用程序、servletContext、httpSession)来解释属性