重置JSTL值

时间:2012-05-30 13:28:58

标签: java jsp jstl

我无法弄清楚为什么这不起作用。基本上,以下代码片段工作正常,除非c:if为真。

如果if语句为true,则应手动将clientId设置为1.这确实有效,但由于某种原因,它不会获取clientProps。

ClientId = 1如果从会话变量'user'中获取,则可以正常工作。所以clientProps应该在第1点有一些东西。 任何线索?

<c:set var="clientId" value="${sessionScope['user'].client.clientId}"/>
<c:if test="${empty sessionScope['user'].client.clientId}">
    True
    <c:set var="clientId" value="1" />
</c:if>

<c:set var="clientProperties" value="${clientProps[clientId]}"/>
<c:set var="clientLogo" value="${clientProperties.clientLogo}"/>
<c:set var="clientURL" value="${clientProperties.clientWebURL}" />
clientId = ${clientId}
clientLogo = ${clientLogo}
clientURL = ${clientURL}

如果用户对象存在,则结果:

clientId = 1 clientLogo = /images/logos/Logo1.png clientURL = http://www.xxx.xxx

如果用户对象不存在,则结果:

True clientId = 1 clientLogo = clientURL =

1 个答案:

答案 0 :(得分:4)

<c:set var="clientId" value="1" />

这是将其设置为String,而地图键显然是Long

您需要将其设置为Long

<c:set var="clientId" value="${1}" />

EL中的数字被隐含地视为Long,这就是为什么以上内容将起作用。