2012-12-12 40 views
2

我正在使用JSF 2.0和primefaces 3.0。我有一個rowtoggler和rowexpansion。由於我使用primefaces舊版本,所以我沒有rowToggle事件。我需要在行擴展時通過ajax調用服務器端的方法。所以我把div標籤放在rowtoggler的周圍,並調用一個javascript函數。現在我想通過行擴展中的panelgrid的click事件來啓動ajax調用。如果發生這種情況,它會看起來像3.4 rowToggle事件。如何通過jquery或javascript生成panelgrid的點擊事件?

+1

爲什麼坐在舊版本而不是升級它? – BalusC

+0

我已經提供了3.0,並被告知只能用於應用程序。 –

回答

2

我已經把commandLink角落找尋rowtoggler和我通過commandlink使AJAX調用,我也可以通過它使用EL2.2

<p:commandLink action="#{myBean.doSomething(foo)}" > 
    <p:rowToggler/> 
</p:commandLink> 
傳遞價值
0

我猜你倒是像

<p:panelGrid> 
    <p:ajax event="click" listener="#{bean.onclick}" /> 
    ... 
    the rest of the grid here 
    ... 
<p:panelGrid> 

我沒有測試它,但它適用於其他組件

+0

我試過這個。但它不是解決方案。我想完全像rowToggle事件,而不使用3.4版本的Primefaces。 –

+0

如果我可以調用panelgrid的click事件,那麼我認爲它與rowtoggle事件非常相似。 –

4

您可以使用jQuery的事件綁定在該行toggler點擊時執行JavaScript。

<h:form id="form"> 
    <p:dataTable id="dt" value="[1,2]"> 
     <p:column> 
      <p:rowToggler /> 
     </p:column> 
    </p:dataTable> 
    <p:remoteCommand name="remotecommand" 
     oncomplete="alert('remote command fired')" /> 
</h:form> 
<script type="text/javascript"> 
$("[id='form:dt'] .ui-row-toggler").on("click", function() { remotecommand(); }); 
</script> 

說明的Javascript:

$("[id='form:dt'] .ui-row-toggler")選擇由ID(form:dt)的數據表,然後選擇具有風格類ui-row-toggler所有後代。

.on("click", function() { remotecommand(); })將匿名函數綁定到點擊事件,該事件觸發由p:remoteCommand聲明的Javascript函數。

您可以使用p:remoteCommand來執行Bean方法,它的方法是actionactionListener。 ;-)

請注意,我不認爲這是一個長期的解決方案。升級到PrimeFaces 3.4將是一個更好的解決方案。

+0

Thanx siebz0r。 我有點困惑。它像ajax一樣工作嗎?而在支持哪一類事件我必須處理? –

+1

'p:remoteCommand'調用後臺bean中的方法就像'p:commandButton'一樣,沒有事件處理等。'p:remoteCommand'使用AJAX提交。 – siebz0r

+0

非常感謝你的回覆。 :)我一定會試試這個:D –

0

除了siebz0r的解決方案,我發現了一個更多的解決方案。

<p:commandLink action="#{bean.abcFunction}"> <p:rowToggler/> </p:commandLink> 

它也可以和簡單的太:-)

相關問題