1) そのためには、バッキング Bean の HtmlScrollableDataTable のインスタンスでバインド rich:scrollableDataTable を使用する必要があります。
バッキング Bean で、アクセサー メソッドを使用してそのインスタンスを作成し、inputText コンポーネントを追加して、それに応じて初期化できます。これらの入力コンポーネントに actionListeners を追加してから、リスナーで、これらの inputText 値を outputText としてテーブルに行として再度追加できます。
2) それ以外の場合は、outputText ではなく inputText を使用し、1 番目以外の後続の行を無効にすることができます。そのため、データのみが表示され、入力が妨げられます。
<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 で行っていたので、それを達成しようとしました。