我不明白为什么这个不起作用。基本上,除非c:if为true,否则下面的代码片段工作得很好。
如果If -语句为true,则应手动将clientId设置为1。这是可行的,但由于某些原因,它将不会获取clientProps。
如果ClientId=1是从会话变量'user‘中获取的,那么它确实工作得很好。所以clientProps应该在第一个点有什么线索?
<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}user-object存在时的结果:
clientId = 1 clientLogo = /images/logos/Logo1.png clientURL = http://www.xxx.xxx
user-object不存在时的结果:
True clientId = 1 clientLogo = clientURL =
发布于 2012-05-30 22:25:02
<c:set var="clientId" value="1" />这是在映射键显然为Long时将其设置为String。
您需要将其设置为Long。
<c:set var="clientId" value="${1}" />EL中的数字被隐式地视为Long,这就是为什么上面的方法可以工作。
https://stackoverflow.com/questions/10817314
复制相似问题