2

なぜこれが機能しないのか理解できません。基本的に、次のコードスニペットは、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 =

4

1 に答える 1

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

これはString、マップキーが明らかにある間として設定していLongます。

代わりに設定する必要がありますLong

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

ELの数値は暗黙的にとして扱われるLongため、上記が機能します。

于 2012-05-30T14:25:02.057 に答える