2012-07-26 66 views
1

我想一起使用三個框架:PrimeFaces,PrimeFaces Mobile和MyFaces ExtVal。庫版本是:PF 3.3.1,PF Mobile 0.9.3,MyFaces ExtVal 2.0.5。請看下面的代碼:PrimeFaces + PrimeFaces Mobile + MyFaces的渲染問題ExtVal

<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:f="http://java.sun.com/jsf/core" 
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:p="http://primefaces.org/ui"> 
    <f:view> 
     <h:head> 
      <meta charset="UTF-8" /> 
      <title>Primefaces Mobile test</title> 
     </h:head> 
     <h:body> 
      <h:form> 
       <p:commandButton value="Oi" /> 
      </h:form> 
     </h:body> 
    </f:view> 
</html> 

如果項目只有PrimeFaces和移動罐,如預期所呈現的commandButton:

<button id="j_idt6:j_idt7" name="j_idt6:j_idt7" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" onclick="PrimeFaces.ab({source:'j_idt6:j_idt7'});return false;" type="submit"><span class="ui-button-text">Oi</span></button> 

這是默認的PrimeFaces渲染器。如果我配置F:觀點與renderKitId爲PRIMEFACES_MOBILE,呈現的按鈕:

<button id="j_idt6:j_idt7" name="j_idt6:j_idt7" type="submit" data-iconpos="left" onclick="PrimeFaces.ab({source:'j_idt6:j_idt7'});return false;">Oi</button> 

這也行,符合市場預期。現在,添加MyFaces ExtVal jar,所有內容都會中斷,只有PRIMEFACES_MOBILE是組件的渲染器。爲了測試行爲,我添加了jar:myfaces-extval-bean-validation-2.0.5.jar,myfaces-extval-core-2.0.5.jar和myfaces-extval-property-validation-2.0.5.jar。然後,我刪除了renderKitId,使默認PrimeFaces庫應該可以使用,但再次的結果是:

<button id="j_idt6:j_idt7" name="j_idt6:j_idt7" type="submit" data-iconpos="left" onclick="PrimeFaces.ab({source:'j_idt6:j_idt7'});return false;">Oi</button> 

我試圖迫使F中的renderKitId:以HTML_BASIC,但它一直呈現PrimeFaces的手機版命令按鈕。

所以,夥計們,你有什麼建議嗎?在RenderKitId的定義之前,我的系統沒問題,當我升級庫時,出現了這個錯誤。我發佈在PrimeFaces forum,但我看不到解決辦法,我不明白爲什麼會發生這種情況。

回答

0

@Fernando,我剛剛報告了一個類似的問題,我使用了OmniFaces,MyFaces JAR和PrimeFaces Mobile JAR。 OmniFaces固定它,並表示以下內容:

評論4由項目構件balusc,今天(4小時前) 在MyFaces的,渲染試劑盒ID被視圖的建築過程中設置(並且在鑽嘴魚科的創建期間風景)。因此臨時視圖沒有正確的渲染工具包ID。

這是已修復:view source code

這 '可能' 解決您的問題,以及。它在OmniFaces 1.3中可用。將JAR添加到您的類路徑中,重新測試並回複測試結果。我認爲您不需要對web.xml或faces-config.xml進行任何更改。如果我沒有錯,OmniFaces有一個稱爲OmniPartialView(Context)的PartialViewContext,但是您可能需要將OmniFaces的FullAjaxExceptionHandler添加到faces-config.xml,並且可能會爲您解決此問題。

+0

我試着用omnifaces-1.3-SNAPSHOT-20121106.jar,但我得到了同樣的行爲。 其實問題在於沒有特定的錯誤。真正發生的是,移動渲染套件被設置爲默認值,忽略了所需渲染套件的任何配置。在我的stackoverflow問題中,我放了一些步驟來重現,並且我只是用commandButton創建了一個簡單的視圖,並且看到了tomcat日誌,沒有任何反應,只是呈現的組件不是HTML_BASIC的一個。 確切的問題是與MyFaces Extval庫,如果我只是刪除他們的罐子一切正常工作。 – Fernando 2012-11-07 10:36:33

+0

最好爲此添加一個MyFaces jira,但我確信OmniFaces可以在它們的庫中添加一個實用程序來解決這個問題。哦,我忘了要求您在顯示此行爲的頁面中添加啓用可恢復視圖組件,但您將不得不按照我在全局問題88中列出的測試步驟進行操作。最好還是添加功能請求以全方位解決問題跟蹤器以解決此問題問題,如果MyFaces jira沒有得到解決。 – Howard 2012-11-07 13:14:11