JSF Rich scroallable Datatable Issue

时间:2011-03-19 07:22:22

标签: jsf richfaces richdatatable scrollable-table

在一个显示对象集合的可滚动数据表中,我必须添加一个手动行作为第一行。该行包含inputText,通过该行,用户可以输入一些值,并且在输入时,这些值将保存并显示在底行中。我无法将此手动行添加为第一行。以下是当前的代码。

<rich:scrollableDataTable value="{resultList}" var="result">
<rich:column>
 <f:facet name="header">Name</f:facet>
<h:outputText value="#{result.name}" />
</rich:column>
<rich:column>
 <f:facet name="header">Category</f:facet>
<h:outputText value="#{result.category}" />
</rich:column>
</rich:scrollableDataTable>

以上代码仅用于显示后端的值。

enter image description here

1 个答案:

答案 0 :(得分:1)

1)为此,您必须在支持bean中使用bind rich:scrollableDataTable和HtmlScrollableDataTable实例。

在支持bean中,使用访问器方法创建它的实例&amp;然后你可以通过添加inputText组件来相应地初始化它。将actionListeners添加到这些输入组件&amp;然后在侦听器中,您可以将这些inputText值作为outputText再次作为行相应地添加到表中。

2)否则你可以使用inputText而不是outputText&amp;禁用除1st之外的后续行,因此只能显示数据 - 阻止输入。

<rich:scrollableDataTable value="{resultList}" var="result">
<rich:column>
 <f:facet name="header">Name</f:facet>
<h:inputText value="#{result.name}" disabled ="#{!result.isFirstRow}"/>
</rich:column>
<rich:column>
 <f:facet name="header">Category</f:facet>
<h:inputText value="#{result.category}" disabled ="#{!result.isFirstRow}"/>
</rich:column>
</rich:scrollableDataTable>

支持Bean:

//---

public void initialize(){

     resultList.add(new Result("", "", true)); // Setting 1st input row enabled
} 

public void inputListener(ActionEvent event){


     // appending object based on input to the resultList

     resultList.add(new Result(inputName, inputValue, false));

     // added a boolean field to identify rows added later & to make them enable/disable accordingly
}

//---

我不熟悉Richfaces,但试图实现它,就像我在使用IceFaces一样。