Rob*_*obP 10 jsf bundle el jsf-2
我正在使用JSF 2.我正在尝试动态解析托管bean属性的消息包引用.该值包含包名称和密钥.这是必需的,因为该值可能来自几个不同的包中的一个.我尝试了很多排列,但是bean的值似乎总是被解析为文字字符串(用EL括号输出),并且永远不会调用bundle来解析并返回值.有任何想法吗?
我试过了:
#{bundle['key']}
${bundle['key']}
bundle['key']
它们完全按原样输出,也在一个<h:outputText>.如果我直接在页面中写它,它工作正常.我的理论是JSF没有意识到它必须将String作为表达式处理.有什么方法可以强迫它吗?
Bal*_*usC 18
EL只会在视图中解析,而不是在模型中解析.否则它将是一个巨大的EL注入攻击漏洞,它允许最终用户在输入字段中输入任意EL表达式并让它们得到解决.不,你不能以任何方式强迫它.
你需要自己解决它.你可以通过以下方式编程来评估它Application#evaluateExpressionGet():
FacesContext context = FacesContext.getCurrentInstance();
String value = context.getApplication().evaluateExpressionGet(context, "#{bundle['key']}", String.class);
// ...
或者,在这种特殊情况下,只需ResourceBundle直接使用API,就像JSF在幕后一样:
ResourceBundle bundle = ResourceBundle.getBundle(basename, FacesContext.getCurrentInstance().getViewRoot().getLocale());
String value = bundle.getString("key");
// ...
| 归档时间: | 
 | 
| 查看次数: | 16420 次 | 
| 最近记录: |