2014-09-30 109 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或更新的版本