2014-01-30 75 views
1

对于一个巨大的项目,我需要在网页上构建多个表单。不能进入细节,但假定具有所要求的表格列表结构;使用钻嘴鱼科JSF 2.2.5h:ui内部形式:重复不能按预期工作

给定的托管Bean:

@ManagedBean 
@SessionScoped 
public class Debug { 
    private final List<DebugBean> list; 

    public Debug() { 
    super(); 
    this.list = new ArrayList<DebugBean>(); 
    this.list.add(new DebugBean("label 1", "value 1")); 
    this.list.add(new DebugBean("label 2", "value 2")); 
    } 

    public String submit() { 
    LOGGER.info("list = " + this.list.toString()); 
    return ""; 
    } 

    public List<DebugBean> getList() { 
    return this.list; 
    } 
} 

的豆DebugBean很简单,只包含两个变量标签和值,这两个字符串,它的setter和getter。

现在XHTML页面:

<h:body style="height: 100%"> 
    <ui:repeat value="#{debug.list}" var="x"> 
    <h:form> 
     <h:panelGrid columns="2"> 
     <h:outputText value="#{x.label}" /> 
     <h:inputTextarea value="#{x.value}" /> 
     </h:panelGrid> 
     <h:commandButton action="#{debug.submit}" value="ok" /> 
    </h:form> 
    </ui:repeat> 
</h:body> 

的问题是在不断变化的第一个值。当我更改第二个时,记录器会按预期给我提供新值。但改变第一个,记录器给我的旧名单,好像我会重新加载完整的形式没有任何改变。这里有什么问题,更重要的是:我能做些什么来使它工作?

回答

0

解决方案很简单,但更糟。我不知道为什么,但是ui:repeat不像h:dataTable那样工作。所以取代UI:重复由h:dataTable解决问题,但意味着页面布局返工(这是一个更大的问题,但可以由我来完成)。