2012-07-19 31 views
1

我仍在開發我的數據表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示例中指定的任何東西),或任何什麼?

在此先感謝。

+0

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

+0

@FlavioCysne,當然,這是我的動態代碼靈感來源。 – 2012-07-20 08:11:40

回答

1

好吧,我剛剛想出的真正原因在下面的方法:

public static AjaxBehavior createAjaxBehavior(MethodExpression expression) { 
    final AjaxBehavior behavior = new AjaxBehavior(); 
    behavior.addAjaxBehaviorListener(new AjaxBehaviorListenerImpl(expression)); 
    return behavior; 
} 

事實上,這一方法實際上返回javax.faces.component.behavior.AjaxBehavior (h:ajax?),而不是org.primefaces.component.behavior.ajax.AjaxBehavior (p:ajax) - 這種情況發生,因爲快速自動完成的,所以我只是錯過了這個事實。

令我沮喪的是PrimeFaces庫沒有回覆任何錯誤。


剛剛完成Q &答:

  • 鑽嘴魚科2.1.7
  • PrimeFaces 3.2
-1

現在應該(至少PF 6.0)是org.primefaces.behavior.ajax.AjaxBehavior

+0

嗨,我剛剛編輯了你的答案,並沒有downvote,但它更像是一個問題/答案的評論,而不是一個真正的答案。謝謝。 – 2016-11-07 10:31:39

相關問題