2014-09-30 112 views
1

使用Javascript或Jquery可以獲得Primefaces版本嗎?通過javascript獲取primefaces版本

根據primeface 4或更新,widgetVar對象通過PF('widgetVar').something()調用。而primefaces 3.5或更低版本不支持PF功能。 因此,我想編寫jquery funtion,支持通過任何primefaces版本調用對話框的widgetVar。

沒有人有任何想法,請分享。謝謝。

+1

版本號可以通過[Java代碼](http://stackoverflow.com/q/18355985/1391249)獲取。您可以創建一個AJAX請求,從服務器獲取並在您的JavaScript/jQuery代碼中使用。 – Tiny 2014-09-30 04:26:02

+0

謝謝@Tiny建議,我認爲您的建議只是解決我的問題的一種解決方案。 – wittakarn 2014-09-30 04:30:47

回答

1

如果你去PrimeFaces展示並在控制檯中執行此:

PrimeFaces.getFacesResource 

你會得到關於如何PrimeFaces暗示越來越Javascript中的當前版本,但不幸的是,該功能僅在展示腳本中可用。

所以我不得不重寫一個類似。

function getPFVersion() { 
    var src = $('script[src*="/javax.faces.resource/primefaces.js"]').attr("src"); 
    return new RegExp("v=([^&]*)").exec(src)[1]; 
} 

,您還可以在後端得到PrimeFaces版本:

PrimeFaces 4.0和更高

String pfVersion = RequestContext.getCurrentInstance().getApplicationContext().getConfig().getBuildVersion(); 

PrimeFaces 3.5和更低

String pfVersion = org.primefaces.util.Constants.VERSION; 
+0

感謝指教,第二個解決方案,即後端PrimeFaces版本的工作,比我的解決方案更好。此外,你的JavaScript是工作。 – wittakarn 2014-09-30 08:40:28

+0

不客氣。 – 2014-09-30 08:43:16

+0

我發現了一些問題。當我使用RequestContext.getCurrentInstance()。getApplicationContext()。getConfig()。getBuildVersion();使用primefaces 3.4.2,會發生NoSuchMethodError異常。因此,提出的後端不適用於primefaces 3.4.2。 – wittakarn 2014-10-09 03:42:43

0

最後,我用資源捆綁到存儲由行家建primefaces版本。

這段代碼在Managedbean檢查版本和更改模式的jquery調用。

public String getPFPattern(final String widgetVar){ 
    String sPFVersion = getPrimefacesVersion(); 
    double iPFVersion = 0; 
    String resp = widgetVar; 
    if(sPFVersion != null && !sPFVersion.equals("")){ 
     iPFVersion = Double.parseDouble(sPFVersion); 
    } 
    if(iPFVersion >= 4){ 
     resp = "PF('".concat(resp).concat("')"); 
    } 
    return resp; 
} 

public String getPrimefacesVersion(){ 
    ResourceBundle bundle = ResourceBundle.getBundle("com.xxx"); 
    return bundle.getString("primefacesVersion"); 
} 

我XHTML

oncomplete="#{versionBean.getPFPattern('dlgReference')}.show()" 

的建議方法getPFPattern的情況下返回PF('xxx') primefaces 4或更新的版本