0

在显示对象集合的可滚动数据表中,我必须添加一个手动行作为第一行。该行包含 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>

上面的代码仅用于显示来自后端的值。

在此处输入图像描述

4

1 回答 1

1

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

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

2)否则,您可以使用 inputText 而不是 outputText 并禁用除第一行以外的后续行,因此只能显示数据 - 阻止输入。

<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>

支持豆:

//---

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 所做的那样。

于 2011-03-19T19:32:20.403 回答