JSF中属性名称(EL)的连接

  • 本文关键字:EL 连接 属性 JSF jsf el
  • 更新时间 :
  • 英文 :


如何使用EL连接属性的名称?

这就是我尝试的:

<ui:repeat value="#{someBean.getParts()}" var="part">  
        <h:inputTextarea value="#{someOtherBean.result}#{part}" />      
</ui:repeat>  

但它没有起作用。

bean有四个属性resultA、resultB、resultC和resultD。getParts()返回"A"、"B"、"C"one_answers"D"。

这是很有可能的。您可以使用<ui:param>来准备动态属性名称,并使用大括号符号[]来访问它。

<ui:repeat value="#{someBean.parts}" var="part">  
    <ui:param name="resultPart" value="result#{part}" />
    <h:inputTextarea value="#{someOtherBean[resultPart]}" />
</ui:repeat>

不用说,我同意迈克尔的观点,这是模型设计中的一种气味。

我认为如果不改变设计,这是不可能实现的。在Java中,设计要求通过名称访问方法字段和属性通常是个坏主意,如果名称是从字符串构建的,则更糟。

可能的解决方案:

  • getParts()返回"resultA"、"resultB"等,并访问它们#{someOtherBean[getParts()]}
  • 将特性名称更改为abcd,并将其作为#{someOtherBean[getParts()]}进行访问
  • 具有单个属性result,该属性包含以"a"、"B"等为键的Map,并以#{someOtherBean.result[getParts()]}的身份访问值

相关内容

  • 没有找到相关文章

最新更新