2013-07-05 43 views
0

我遇到在http://wiki.apache.org/myfaces/Facelets_with_Trinidad中描述的問題。更具體地說:使用特立尼達PPR(局部頁面呈現)與Facelets進行問題

「執行PPR時組件的id生成存在問題,症狀是單擊某個命令不會執行所需的操作,而只是重新加載整個頁面。任何命令都會成功

要解決此問題,請手動爲受影響頁面上的所有命令設置ID。「

我已經嘗試了上述方法,但問題不斷出現。有沒有人可以解決這個問題?

+0

你有涉及您的網站valueChangeListeners? – lkdg

+0

我只在一個頁面中有valueChangeListeners。在我有上述問題的頁面中,沒有valueChangeListener。 – Puma

+0

我有這個問題,這就是爲什麼我問。我有一個commandButton和一些tr:inputText與一個valueChangeListener。用戶更改該字段的值並將該鼠標放在該字段中。然後用戶點擊該命令,但這是valueChangeEvent被觸發並且按鈕的操作丟失的時刻。所以你必須點擊兩次。 – lkdg

回答

0

最後,我通過在加載頁面上調用下面的函數解決了上述問題。

// Override function to solve ppr problems 
function overrideFunc() { 
    TrPage.prototype._updateViewState = function(a59, a60, a61) { 
    var a62 = null; 
    if (a61) 
     a62 = a59.getElementById(a61); 

    for (var i = 0; i < a59.forms.length; i++) { 
     a62 = a59.forms[i]; 
     if (!a62) 
      return; 

     var a63 = a62.elements[TrPage._VIEW_STATE_ID]; 
     if (!a63) { 
      a63 = a59.createElement("input"); 
      a63.type = 'hidden'; 

      if(_agent.isIE && _agent.version < 8) { 
       a63.id = TrPage._VIEW_STATE_ID; 
      } 

      a63.name = TrPage._VIEW_STATE_ID; 
      a62.appendChild(a63); 
     } 

     a63.value = TrPage._getTextContent(a60); 
    } 
}; 

}