【问题标题】:Nesting of EL expressions when creating own tag创建自己的标签时嵌套 EL 表达式
【发布时间】:2013-07-09 09:15:35
【问题描述】:

我正在使用 JSF 2.0 并创建自己的标签。我想要的结果是一个我可以这样使用的标签:

<mytaglib:label attr="test" />

这会像这样呈现&lt;h:outputLabel /&gt;

<h:outputLabel id="test" value="#{textBean.label['test']}" />

TextBean 具有属性labelMap&lt;String, String&gt; 类型),它为我提供每个键的文本。

我的 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>

#{textBean.label['#{attr}']} 内装箱#{attr} 似乎不起作用。有没有办法让它工作,或者我可以采取哪种解决方法来让它工作?

【问题讨论】:

    标签: java jsf jsf-2 taglib


    【解决方案1】:

    您不应使用嵌套的 EL 表达式。

    试试这样的方法:

    value="#{textBean.label[attr]}"
    

    但我不完全确定这是否是完全正确的语法,因为我不知道来自textBeanlabel 代表什么。如需更多信息,请提供textBean的样本。

    【讨论】:

    • 行得通,谢谢!我在问题中添加了对label 的更准确描述。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-13
    • 1970-01-01
    • 1970-01-01
    • 2011-06-12
    相关资源
    最近更新 更多