使用varStatus使用动态生成的HtmlInputText的ui:repeat失败



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

循环。index与varStatus一起使用,在使用绑定属性时总是失败。

例外:

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组件绑定?

谢谢

在视图构建时评估所有绑定属性(以及id属性和标记处理程序,如JSTL)

在渲染阶段(稍后)处理ui:repeat

您不应该绑定输入,您可能对它们的值感兴趣,因此在Value字段

中使用相关表达式(对bean)。

相关内容

  • 没有找到相关文章

最新更新