How to convert an arbitrary object to String with EL + JSTL? (calling toString())

You just do it like this:

${object}

And it'll toString it for you.


edit: Your nested expression can be resolved like this:

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

The first line stringifies (using toString()) the ${someenum} expression and stores it in the myValue variable. The second line uses myValue to index the map.


I think in new versions of JSP api you can call methods, even with parameters!

I just tried ${statusColorMap[jobExecution.exitStatus.toString()]} and it works fine!


Couple things you can do.

One, you can use c:set -

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

Another thing you can do is create your own EL function, call it toString, and then call that in JSTL. EL functions are basically static methods hooked up with a taglib file. Straightforward to do.

Edit:

Really? Did you actually, you know, try it?

<%@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>

And JSP 2.0 tagfile and JSTL functions are trivial.

Tags:

Java

Jsp

Jstl

El