java - 重置 JSTL 值

标签 java jsp jstl

我不明白为什么这不起作用。基本上,除非 c:if 为 true,否则以下代码片段可以正常工作。

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

如果从 session 变量“用户”获取,ClientId=1 确实可以正常工作。所以 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

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

真实 clientId = 1 clientLogo = clientURL =

最佳答案

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

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

您需要将其设置为Long

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

EL 中的数字被隐式地视为 Long,这就是上面的方法可以工作的原因。

关于java - 重置 JSTL 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10817314/

相关文章:

java - Spring MVC 和 Liferay - 资源映射问题

java - 客户计算机上的 Apache httpclient 超时(处理请求时捕获 I/O 异常 : Connection timed out

java - 每天同时使所有 Activity session 过期

jsp - 根据 JSP 页面上的数据库条目检查复选框

java - jSTL taligb 中的 HTML5 data-* 属性

java - 获取动态链接,而不是深层链接 - Android 上的 Firebase 动态链接

java - 导出的 APK 不起作用

mysql - Unicode 在 Java EE 6 Openshift MySQL 中显示不正确

java - 在jsp中处理文本框中的空值

jsp - 是否有等效于 <c :url/> 的 JSTL EL(表达式语言)