2011-07-20 86 views
7

Primefaces 2.2.1號碼:阿賈克斯的commandButton不叫內號碼:DataList控件

鑽嘴魚科2.1.2

我在JSF的bean一個複雜的方法:

public void saySomething() { 
    log.debug("SAY SOMETHING !"); 
} 

和一個簡單的按鈕在JSF:

<p:commandButton 
    value="say something" 
    process="@this" update="@none" action="#{timetableBean.saySomething}" /> 

點擊該按鈕,結果在我簡單的日誌記錄:

DEBUG PhaseTracker - BEFORE PHASE INVOKE_APPLICATION 5 
DEBUG TimetableBean - SAY SOMETHING ! 
DEBUG PhaseTracker - AFTER PHASE INVOKE_APPLICATION 5 

讓我們繼續下一個簡單的例子。 當放置一個P內是相同的按鈕:DataList的是這樣的:

<p:dataList id="groupUsers2" value="#{timetableBean.group.users}" var="user" itemType="circle" style="padding:0; margin: 0;"> 
    <p:commandButton 
     value="#{user.data['selected'] ? 'V' : 'X'}" 
     process="@this" update="@none" action="#{timetableBean.saySomething}" /> 
    <p:commandLink value="#{user.userId} - #{user.name}" process="@this" /> 
</p:dataList> 

單擊按鈕,結果在我簡單的日誌記錄:

DEBUG PhaseTracker - BEFORE PHASE INVOKE_APPLICATION 5 
DEBUG PhaseTracker - AFTER PHASE INVOKE_APPLICATION 5 

saySomething()的方法,不叫!

我做錯了什麼?

+0

問題可能是'process'屬性。這是什麼意思,因爲將爲'#{timetableBean.group.users}'的每個元素創建一個commandButton組件。 '@ this'應該實際處理什麼? –

+0

@maple_shaft:我把它改成了process =「@form」,但它仍然不起作用,不會調用偵聽器方法。 – bertie

回答

9

問題已解決。

發現在here

溶液爲了監聽要被調用,該p內的部件:數據列表應與p:column

<p:dataList id="groupUsers2" value="#{timetableBean.group.users}" var="user" itemType="circle" style="padding:0; margin: 0;"> 
    <p:column> 
    <p:commandButton 
     value="#{user.data['selected'] ? 'V' : 'X'}" 
     process="@this" update="@none" action="#{timetableBean.saySomething}" /> 
    <p:commandLink value="#{user.userId} - #{user.name}" process="@this" /> 
    </p:column> 
</p:dataList> 

奇怪被封裝雖然,我沒有在文檔中看到這,因爲它沒有指定p:列。也許它在primefaces 2.2.1 doc的勘誤表中?

相關問題here

+0

是的,我在2.2.1文檔中也沒有看到它。對不起,我不是更多的幫助。 –

+0

Page 118聲明。 –

+0

@Cagatay Civici:嗨,擎天柱。在我的2.2文檔中,第118頁正在討論ajax分頁,我仍然沒有看到它說p:專欄。也許它是隱含的? – bertie