【问题标题】:JSF 2 composite component editableValueHolder dynamic nameJSF 2 复合组件 editableValueHolder 动态名称
【发布时间】:2014-03-27 09:13:50
【问题描述】:

有没有办法在复合组件中为 editableValueHolder 定义一个动态的“名称”属性。

例如:

<composite:interface>
    <composite:attribute name="name" required="false" default="text"/>
    <composite:attribute name="value" required="false"/>
    <composite:editableValueHolder name="#{cc.attrs.name}" targets="textId"/>
</composite:interface>

<composite:implementation>
    <h:inputText id="textId" value="#{cc.attrs.value}" validatorMessage="Error"/>
</composite:implementation>

然后让页面作者使用我的标签,例如:

<my:inputText value="whatever" name="testText">
    <f:validateLength for="testText" minimum="20"/>
</my:inputText>

【问题讨论】:

  • 问题是什么?
  • 我该怎么做?我尝试了这个,但没有运气,我没有得到任何异常,但验证器没有工作。 editableValueHolder 中的“名称”属性必须是静态的才能工作。我不能在运行时使用 EL 来评估它。

标签: java jsf jakarta-ee


【解决方案1】:

您应该从 bean 中获取文本并用它初始化您的组件。

<my:inputText value="whatever" name="#{yourBean.getDynamicText()}" />

【讨论】:

    【解决方案2】:

    通过将“editableValueHolder”标签作为“implementation”标签的子标签移动来解决。似乎 EL 不会评估“interface”标签中的表达式。

    感谢大家的帮助。

    【讨论】:

      猜你喜欢
      • 2016-11-19
      • 2013-11-10
      • 1970-01-01
      • 2013-02-06
      • 1970-01-01
      • 2011-09-14
      • 2011-09-28
      • 2014-05-27
      • 1970-01-01
      相关资源
      最近更新 更多