私は非常にあなたの質問の答えを知っている興味があります 私は伝統的なJavascriptを使用して達成することができますが、私はリッチを使用する:datatable私はクライアント上の新しい行を追加することはできません。
しかし、サーバー関数の呼び出しでajaxを使用しました。この関数は、新しい空の行をdataTableリストに追加し、rich:datatableを再度レンダリングします。
<rich:column>
<f:facet name="header"><h:outputLabel value="#{msgs.notes}" style="font-size:15px;"/> </f:facet>
<h:inputText value="#{line.notes}" >
<a4j:ajax event="blur"
execute="datatable"
render="datatable"
immediate="true"
listener="#{saleBacking.addNewLineInDataTable}"
oncomplete="document.getElementById('myform:datatable:#{saleBacking.view_no_counter-1}:line').focus();"/>
</h:inputText>
</rich:column>
及びcorrect's maneged bean
public void addNewLineInDataTable(AjaxBehaviorEvent event)
{
SaleLine saleLine = new SaleLine();
saleLine.setId(salesLineslist.isEmpty() ? 1 : salesLineslist.get(salesLineslist.size() - 1).getId() + 1);
salesLineslist.add(saleLine);
saleLine = new SaleLine();
saleLine = new SaleLine();
saleLine.setSaleId(sale);
saleLine.setViewNo(++view_no_counter);
saleLine.setDiscount(0d);
saleLine.setItemPrice(0d);
salesLines.add(saleLine);
}
におけるmy xhtmlのpage。行を追加/削除するには、テーブル全体を再レンダリングする必要があります。 –