【发布时间】:2012-03-27 05:48:42
【问题描述】:
在我的应用程序中,我试图从消息包中获取标签。 然而,我使用变量而不是使用常量键值
<c:forEach var="emailAddress" items="${emailAddresses}">
...
<c:set var="labelKey" value="Contact_Label_${emailAddress.type}"/>
...
<h:outputText value="#{faces_translations[labelKey]}"/>
...
</c:forEach>
大多数情况下,这可以正常工作,但在页面打开时每隔一段时间 加载的一些标签没有正确处理和以下 显示消息:
???Contact_Label_???
看起来 email.type 没有返回值,但是我添加了一些 调试代码通过包含打印出 email.type 的值
${emailAddress.type}
看到返回了一个值。
我尝试的另一件事是在每次设置之前删除该值 再次在循环内使用 .这导致了以下 例外。我确认我已将标记库包含在 WAR 文件中 (jstl-api-1.2.jar 和 jstl-impl-1.2.jar 以及 javax.faces-2.1.7)。
<c:remove> Tag Library supports namespace: http://java.sun.com/jsp/jstl/core,
but no tag was defined for name: remove
这两个问题确实令人费解。该标签大部分时间都有效, 但并非始终如一。标签在包含的库中定义,但找不到。
提前感谢您的任何指点。
【问题讨论】:
-
stackoverflow.com/questions/4154841/… 提供了一些信息。也许 `'${labelKey}' 可能会起作用。
-
你真的不应该混合 JSTL/JSF2.0。改用 ui:repeat 怎么样?