gpt4 book ai didi

使用 f :loadBundle. 时出现 javax.el.PropertyNotFoundException .. 这是否正确实现了规范?

转载 作者:行者123 更新时间:2023-11-28 21:56:50 24 4
gpt4 key购买 nike

我有一个 f:loadBundle,它从我的类路径加载一个属性文件。

<f:loadBundle basename="com.xxx.ui.messages" var="msg" />

稍后,我尝试使用具有以下语法的资源包中的消息:

<h:outputText value="test message: #{msg.does_not_exist} --"/>

以前 JSF 会打印出“NOT FOUND”消息,但现在会抛出异常。规范是否更改或这是正确的行为?

我使用 Mojarra 2.1.9 和 JUEL 2.2.4 作为 EL 解析器。这是堆栈跟踪:

javax.el.PropertyNotFoundException: /WEB-INF/xxx.xhtml @10,70 value="test message: #{msg.does_not_exist} --": Property 'does_not_exist' not found on type java.util.PropertyResourceBundle
at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:111)
at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:194)
at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:182)
at javax.faces.component.UIOutput.getValue(UIOutput.java:169)
at com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getValue(HtmlBasicInputRenderer.java:205)
at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.getCurrentValue(HtmlBasicRenderer.java:355)
at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeEnd(HtmlBasicRenderer.java:164)

编辑:可以在此处验证正确的行为:http://javaserverfaces.java.net/nonav/docs/2.0/vdldocs/facelets/f/loadBundle.html

(这表示文字字符串 ???KEY??? 是从 Map 返回的,其中 KEY 是在 Map 中查找的键,而不是抛出 MissingResourceException)

编辑:删除 JUEL 后同样的问题

最佳答案

所以答案实际上就在眼前……感谢@millimoose 让我走上正确的道路。

注意规范是这样说的:

the literal string ???KEY??? is returned from the Map, where KEY is the key being looked up in the Map, instead of a MissingResourceException being thrown.

但我的堆栈跟踪是这样说的:

javax.el.PropertyNotFoundException: /WEB-INF/xxx.xhtml @10,70 value="test message: #{msg.does_not_exist} --": Property 'does_not_exist' not found on type java.util.PropertyResourceBundle

啊哈,一个可能的错误!

知道这个类将从 tomcat/lib 中提取,我浏览了它们的源代码和 javadoc here .注意到“getValue()”上的抛出声明了吗?

这与规范 here 形成鲜明对比.

所以我从 tomcat/lib 中删除了 el-api 并将其替换为规范 jar ( here ),问题就解决了!

为什么 Tomcat 与规范如此不同我无法理解……那些疯狂的 Apache 家伙。

关于使用 f :loadBundle. 时出现 javax.el.PropertyNotFoundException .. 这是否正确实现了规范?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11039791/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com