【问题标题】:JSF 2.2: ui:repeat with dynamically generated HtmlInputText using varStatus failed [duplicate]JSF 2.2:ui:repeat 使用 varStatus 动态生成的 HtmlInputText 失败 [重复]
【发布时间】:2015-11-16 21:29:46
【问题描述】:

我只想动态生成 HtmlInputFields,在这个示例中我只生成了 3 个字段。在 out.xhtml 中,我想用 ui:repeat 渲染这些组件并使用 binding 属性(不是值!!)绑定它们。

使用绑定属性时,与 varStatus 一起使用的 loop.index 总是失败。

例外:

binding="#{loop.index}": Target Unreachable, identifier 'loop' resolved to null

out.xhtml:

<ui:repeat value="#{myBean.htmlInputs}" varStatus="loop" var="bItem">
  <!-- THIS WORKS -->
  <h:inputText value="#{loop.index}" />
  <!-- THIS WORKS -->
  <h:inputText value="#{myBean.htmlInputs[0]}" />
  <!-- THIS WORKS ALSO -->
  <h:inputText binding="#{myBean.htmlInputs[0]}" />
  <!-- AND THIS FAILES ?? WHY ?? -->
  <h:inputText binding="#{myBean.htmlInputs[loop.index]}" /><p/> 
</ui:repeat>

MyBean.java

@Named
@SessionScoped
public class BookingBean implements Serializable {
  private List<HtmlInputText> htmlInputs = new ArrayList<>();

  @PostConstruct
  public void init() {
    HtmlInputText hInput;
    for (int i=0 ; i<3 ; i++) {
      hInput = new HtmlInputText();
      hInput.setValue("item #:" + i);
      htmlInputs.add( hInput );
    }
  }

  public List<HtmlInputText> getHtmlInputs() {
    return htmlInputs;
  }

  public void setHtmlInputs(List<HtmlInputText> htmlInputs) {
    this.htmlInputs = htmlInputs;
  }
}

我现在的问题是: 如何在 JSF 2.2 中通过 ui:repeat 正确使用动态生成的 JSF 组件的绑定?

感谢

【问题讨论】:

  • 简介:为了简单起见,您可以避免在 backing bean 中使用讨厌的 List&lt;HtmlInputText&gt; 并使用简单易维护/阅读/理解的方式实现相同的目标XHTML 代码。
  • @DarshanPatel,谢谢。很好的例子,但我需要使用绑定而不是 value 属性。
  • @Tiny:谢谢你,但我也喜欢简单易于维护/阅读/理解的 java 代码 :)

标签: jsf jsf-2.2


【解决方案1】:

view build time 期间评估所有绑定属性(连同id attribtues and taghandlers like JSTL

ui:repeatRender phase (later) 期间处理。

你不应该绑定你的输入,你可能对它们的值感兴趣,所以在 Value 字段中使用一个相关的表达式(到 bean)

【讨论】:

  • 感谢您的回答,但我仍然不知道为什么&lt;h:inputText binding="#{myBean.htmlInputs[0]}" /&gt; 工作正常而&lt;h:inputText binding="#{myBean.htmlInputs[loop.index]}" /&gt; 不工作:(
  • 我扩展我的回复
  • 谢谢,现在我明白了。 :)
猜你喜欢
  • 1970-01-01
  • 2014-01-09
  • 2015-08-28
  • 2017-11-10
  • 2017-06-01
  • 2011-12-10
  • 2012-05-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多