在一个显示对象集合的可滚动数据表中,我必须添加一个手动行作为第一行。该行包含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>
以上代码仅用于显示后端的值。
答案 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一样。