我正在使用JSF 2.0并创建自己的标记。我想要的结果是一个标签,我可以像这样使用:
<mytaglib:label attr="test" />
会像这样呈现<h:outputLabel />
:
<h:outputLabel id="test" value="#{textBean.label['test']}" />
TextBean具有属性label
(类型为Map<String, String>
),它为每个键提供了一个文本。
我的label.xhtml看起来像这样:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets">
<h:body>
<ui:composition>
<h:outputLabel for="#{attr}" value="#{textBean.label['#{attr}']}:"
</ui:composition>
</h:body>
</html>
#{attr}
内的拳击#{textBean.label['#{attr}']}
似乎不起作用。有没有办法让这个工作,或者我可以做出哪些解决方法让它工作?
答案 0 :(得分:1)
您不应使用嵌套的EL表达式。
尝试这样的事情:
value="#{textBean.label[attr]}"
但我不完全确定这是否是完全正确的语法,因为我不知道来自label
的{{1}}代表什么。如果您需要更多信息,请提供textBean
的样本。