Javascript 未捕获类型错误:对象#<;对象>;没有方法';更换';关于primefaces.js
我有一个链接可以在xhtml中从lang 1切换到lang 2:Javascript 未捕获类型错误:对象#<;对象>;没有方法';更换';关于primefaces.js,javascript,jsf,primefaces,Javascript,Jsf,Primefaces,我有一个链接可以在xhtml中从lang 1切换到lang 2: <p:commandLink value="#{msgs['home.french']}" id="frenchLink" rendered="#{mainBean.changeLanguage.getLanguage() ne 'fr'}" actionListener="#{mainBean.refreshPage}" ajax="false"> <f:param name
<p:commandLink value="#{msgs['home.french']}" id="frenchLink"
rendered="#{mainBean.changeLanguage.getLanguage() ne 'fr'}"
actionListener="#{mainBean.refreshPage}" ajax="false">
<f:param name="selectedLanguage" value="fr"/>
</p:commandLink>
<p:commandLink value="#{msgs['home.english']}" id="englishLink" r
endered="#{mainBean.changeLanguage.getLanguage() ne 'en'}" actionListener="#{mainBean.refreshPage}" ajax="false">
<f:param name="selectedLanguage" value="en"/>
</p:commandLink>
始终获取未捕获的TypeError:Object#在primefaces.js上没有方法“replace”
只有当我切换到法语和带有SelectOne菜单、对话框的页面时,这些问题才会弹出
任何关于这一点的指点都将不胜感激
应用程序使用JSF2.0、Primefaces 3.5在yor faces-config.xml中定义默认语言
<application>
<locale-config>
<default-locale>en</default-locale>
</locale-config>
</application>
添加方法以更改语言
public void changeLanguage(){
FacesContext context = FacesContext.getCurrentInstance();
String language = context.getExternalContext().getRequestParameterMap().get("selectedLanguage");
context.getViewRoot().setLocale(countries.get(language));
}
在您的视图中(xhtml):
我还需要保留查看页面的详细信息,这就是为什么我要使用处理程序将其设置回上下文。主要问题似乎是primefaces js重新加载时出现的。我是否需要在web.xml中明确提到一些与primefaces相关的内容?您是否手动包含另一个jQuery副本?如果是,具体原因是什么?没有解释,但这是一个比所建议的形式更有效的解决方案。
private static Map<String,Locale> countries;
static{
countries = new HashMap<String,Locale>();
countries.put("fr", Locale.FRANCE);
countries.put("en", Locale.ENGLISH);
}
public void changeLanguage(){
FacesContext context = FacesContext.getCurrentInstance();
String language = context.getExternalContext().getRequestParameterMap().get("selectedLanguage");
context.getViewRoot().setLocale(countries.get(language));
}
<p:commandLink value="#{msgs['home.french']}" id="frenchLink"
rendered="#{mainBean.changeLanguage.getLanguage() ne 'fr'}"
actionListener="#{mainBean.changeLanguage}" ajax="false"
oncomplete="javascript:location.reload(true)">
<f:param name="selectedLanguage" value="fr"/>
</p:commandLink>
<p:commandLink value="#{msgs['home.english']}" id="englishLink"
rendered="#{mainBean.changeLanguage.getLanguage() ne 'en'}" actionListener="#{mainBean.changeLanguage}" ajax="false"
oncomplete="javascript:location.reload(true)">
<f:param name="selectedLanguage" value="en"/>
</p:commandLink>