如何使用EL + JSTL将任意对象转换为字符串?(调用 toString())

2022-09-05 00:38:16

有没有办法在带有EL和JSTL的对象上调用string()?(我需要枚举的字符串表示形式作为 JSP EL 表达式中映射中的索引。我希望像java这样的东西可以像java一样工作,但是EL并不是那么好,而且似乎没有任何函数可以做到这一点。${''+object}

说明:我有一个将字符串映射到字符串的变量,并且我有一个枚举的变量。我想做这样的事情。(当然.toString()不起作用,但什么工作?somemapsomeenum${somemap[someenum.toString()]}


答案 1

你只是这样做:

${object}

它会为你。toString


编辑:您的嵌套表达式可以像这样解析:

<c:set var="myValue">${someenum}</c:set>
${somemap[myValue]}

第一行字符串化(使用 )表达式并将其存储在变量中。第二条线用于为地图编制索引。toString()${someenum}myValuemyValue


答案 2

你可以做的几件事。

一、可以使用c:set-

<c:set var="nowAString">${yourVar}</c:set>

你可以做的另一件事是创建自己的EL函数,将其调用String,然后在JSTL中调用它。EL 函数基本上是与 taglib 文件挂钩的静态方法。简单明了。

编辑:

真?你真的,你知道,尝试过吗?

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<%@taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <h1>Hello World!</h1>
        <%
        pageContext.setAttribute("testDate", new java.util.Date());
        %>

        <c:set var="myVar">${testDate}</c:set>
        testDate = ${testDate}<br/>
        myVar = ${myVar}<br/>
        testDate Class = ${testDate.class}<br/>
        myVar Class = ${myVar.class}<br/>
    </body>
</html>

JSP 2.0 标记文件和 JSTL 函数是微不足道的。