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

Han*_*örr 11 java jsp jstl el

有没有办法用EL和JSTL调用对象上的toString()?(我需要枚举的String表示形式作为JSP EL表达式中的映射索引.)我希望${''+object}像java 一样工作,但EL不是很好,并且似乎没有任何函数可以做它.

澄清:我有一个somemap将字符串映射到字符串的变量someenum,我有一个枚举变量.我想做点什么${somemap[someenum.toString()]}.(当然.toString()不起作用,但是什么呢?)

ska*_*man 23

你这样做是这样的:

${object}
Run Code Online (Sandbox Code Playgroud)

它会toString为你而生.


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

<c:set var="myValue">${someenum}</c:set>
${somemap[myValue]}
Run Code Online (Sandbox Code Playgroud)

第一行将表达式字符串化(使用toString())${someenum}并将其存储在myValue变量中.第二行用于myValue索引地图.


Wil*_*ung 5

你可以做几件事情.

一,你可以使用c:set -

<c:set var="nowAString">${yourVar}</c:set>
Run Code Online (Sandbox Code Playgroud)

你可以做的另一件事是创建自己的EL函数,将其命名为toString,然后在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>
Run Code Online (Sandbox Code Playgroud)

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