将参数从资源包传递到消息到 **h:outputFormat** 之外的组件
是否有一种方便的方法将参数从资源包传递到除 h:outputFormat 之外的组件?
例如,这是合法的:
<h:outputFormat value="#{myBundle['parametricMessage']}">
<f:param value="#{myBundle['someParameterValue']}"/>
</h:outputFormat>
但我需要它作为按钮,就像这样(这不起作用):
<h:commandButton value="#{myBundle['parametricMessage']}">
<f:param value="#{myBundle['someParameterValue']}"/>
</h:commandButton>
当然,我可以使用链接而不是按钮,并且我可以通过托管中的属性来实现它bean,但在这个问题中,我正在寻找一种方便的方式来使用该按钮...
我正在使用RichFaces 3.3.3、JSF2、facelets。
Is there a convenient way to pass parameters to messages from resource bundle to components other than h:outputFormat?
For instance, this is legal:
<h:outputFormat value="#{myBundle['parametricMessage']}">
<f:param value="#{myBundle['someParameterValue']}"/>
</h:outputFormat>
But I need it for a button, like this (which won't work):
<h:commandButton value="#{myBundle['parametricMessage']}">
<f:param value="#{myBundle['someParameterValue']}"/>
</h:commandButton>
Of course, I can use link instead of button, and I can make it through a property in a managed bean, but in this question I'm seeking for a convenient way to use the button...
I'm using RichFaces 3.3.3, JSF2, facelets.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这种方法怎么样?
EL 表达式允许您定义一个函数。您首先定义一个 EL 表达式的函数,该函数接受资源包、其消息键和占位符的参数,并输出已解析的消息。
然后调用此函数以获取
中已解析的消息:How about this approach ?
EL expression allow you to define a function .You first define a EL expression 's function , which accepts a resource bundle , its message key and placeholder 's parameter and output the resolved message .
Then call this function to get the resolved message in the
<h:commandButton>
:试试这个:
顺便说一句,这可以满足您的要求,并且还可以避免编写支持 bean 代码。
Try this:
Btw, this does what you want and also avoids having to write backing bean code.
好吧,我没有找到很好的答案,所以这个问题仍然悬而未决。
我发现的一个好的做法是有一个特殊的类来表示每个资源包(具有参数化的东西),并传输所有消息形成,并在那里使用上下文(例如,从 FacesContext 获取语言环境,获取 ResourceBundle ,应用参数等)。最后从 ManagedBean 提供对此类服务类的单例的访问。
这需要完成一些额外的工作,但可以解决问题并且值得花时间。
Well I didn't find good answer on that, so the question will remain open.
A good practice I've discovered, is to have a special class that represents each resource bundle (that has parametric stuff), and to transfer all the message formation, and working with context there (like, acquire locale from FacesContext, get a ResourceBundle, apply parameters, etc). And finally to provide access to a singleton of such service class from your ManagedBean.
This requires some additional work to be done, but solves the problem and is worth of the time.