我对内置的JSF资源包可能性并不满意,例如:
<h:outputFormat value="#{messages['form.label.create']}">
因此,我尝试编写自己的复合组件来缩短这些内容:
<composite:interface>
<composite:attribute name="value" />
<composite:attribute name="p1" />
</composite:interface>
<composite:implementation>
<h:outputFormat value="#{messages['cc.attrs.value']}"> //text.properties
<f:param value="#{cc.attrs.p1}" />
</h:outputFormat>
</composite:implementation>
用法:
<cc:messages value="label.name" p1="#{test}" />
但是表达式messages['cc.attrs.value']
在资源包中查找cc.attrs。*而不是获取值内容。
我可以忘记我的做法吗?有谁知道如何做类似的事情?
答案 0 :(得分:2)
尝试改为编写messages[cc.attrs.value]
。
JSF将'cc.attrs.value'
解释为字符串值而不是变量名。