我仍在開發我的數據表UI應用程序,最後我介紹了此組件開發的最後階段:內聯單元格編輯。PrimeFaces:如何以編程方式聲明和綁定AJAX「rowEdit」事件到p:dataTable?
首先,數據表是在Java端完全動態構建的,並沒有使用facelet聲明來描述表。如果我有一個靜態表聲明,編輯可以指定like this(見單元格編輯章):
<p:dataTable>
...
<p:ajax event="rowEdit" listener="#{tableBean.onEdit}"/>
...
</p:dataTable>
我可以很容易地指定爲可編輯的Java代碼dataTable.setEditable(true)
數據表 - 它工程,請注意,編輯保存/取消圖標工作正常,但在後端沒有效果。因爲我不能在該PF展示實驗室頁面(?我必須始終使用監聽器那裏),因爲該數據表的動態渲染規定的方式申報的,我試圖使用以下命令:
public static AjaxBehavior createAjaxBehavior(MethodExpression expression) {
final AjaxBehavior behavior = new AjaxBehavior();
behavior.addAjaxBehaviorListener(new AjaxBehaviorListenerImpl(expression));
return behavior;
}
...
dataTable.addClientBehavior("rowEdit", createAjaxBehavior(createMethodExpression(TableBean.class, "onEdit", void.class, new Class<?>[] {RowEditEvent.class})));
但是,只要我添加rowEdit
聽衆,就像我上面要做的那樣,哇,我突然得到:mojarra is not defined
並且沒有保存/取消行編輯按鈕正在工作。好的,我發現了一個類似的問題,描述和解決here,手動包含必要的腳本,現在客戶端的JavaScript錯誤消失了,但是我仍然無法退出行編輯模式,並且行仍然沒有更新 。
我整天都在努力弄清楚發生了什麼,並且盲目地看到正確的方法。我只是錯過了一些東西(如確定某一行,或可能指定別的地方 - 但我的Java代碼不會產生超過PF示例中指定的任何東西),或任何什麼?
在此先感謝。
你看看showcase-labs Editable Datatable [源代碼](http://code.google.com/p/primefaces/source/browse/examples/trunk/showcase/src/main/webapp/ui /datatableEditing.xhtml)或來自[演示頁面](http://www.primefaces.org/showcase-labs/ui/datatableEditing.jsf)? – 2012-07-19 17:01:22
@FlavioCysne,當然,這是我的動態代碼靈感來源。 – 2012-07-20 08:11:40