我有一个JSF / RichFaces设置,我找到了这个tutorial。我一步一步地跟着它,但我无法得到它。
另外:教程中提到了language.jsp,有人可以告诉我它有什么特别之处吗?
或者,如果您认为这不是一个合适的教程并且有更好的教程,请告诉我。
答案 0 :(得分:6)
本教程中的所有步骤都不是真正需要的
我所做的(它的工作原理)是:
1.在 loging.xhtm 中,例如:
<f:view locale="#{languageDetails.locale}" >
<head>
.....
<f:loadBundle basename="messages.Messages" var="msg1"/>
.....
<f:view>
<h:form>
<h:panelGrid columns="2">
<h:outputText value="Select Language"></h:outputText>
<h:selectOneMenu id="dropdown" value="#{languageDetails.locale}">
<f:selectItem itemValue="en" itemLabel="English" />
<f:selectItem itemValue="es" itemLabel="Spanish" />
<f:selectItem itemValue="de" itemLabel="German" />
</h:selectOneMenu>
</h:panelGrid>
<p><h:commandButton id="change" value="Change Language"
action="#{languageDetails.changeLanguage}" /></p>
</h:form>
</f:view>
</body>
</f:view>
2.在java源代码中我也做了一些改动:
public class LanguageDetails {
private static String locale = Locale.getDefault().getDisplayLanguage();
public void setLocale(String locale1) {
this.locale = locale1;
}
public synchronized String getLocale() {
return locale;
}
public synchronized String changeLanguage() {
return "changed";
}
}
就是这样 希望这可以帮助
答案 1 :(得分:2)
我需要将其实现为按钮,当我点击时,语言会发生变化。我有2个语言环境(en,cs)。这是我的解决方案:
1.命令按钮:
<h:form>
<h:commandButton id="change" value="#{locale.locale}" action="#{locale.changeLanguage}" />
</h:form>
2.locale bean:
@ManagedBean(name = "locale")
@SessionScoped
public class LocaleBean {
private static String locale = "en";
public void setLocale(String locale1) {
LocaleBean.locale = locale1;
}
public synchronized String getLocale() {
return locale;
}
public synchronized String changeLanguage() {
if (!locale.contains("cs")) {
setLocale("cs");
} else {
setLocale("en");
}
return "changed";
}
}
这可能对某人有帮助。
答案 2 :(得分:1)
在JSF tutorial中,language.jsp是一个网页,允许用户选择自己选择的语言环境。在示例中,language.jsp页面未国际化。当您从下拉列表中选择语言并单击更改语言按钮时,下一页(国际化的)将以所选语言显示。正如本教程中明确提到的那样,&#39; locale&#39; f:view中的属性支持我们可以包含的EL &lt; f:view locale =&#34;#{languageDetails.locale}&#34;&gt;在下一页(UserDetailsForm.jsp和userDetailsSubmitted.jsp)中。
答案 3 :(得分:1)
你可以通过bean,controller等中的代码来改变它......
FacesContext.getCurrentInstance().getViewRoot().setLocale(Locale.ENGLISH);
答案 4 :(得分:0)
另一种方法如果您使用Spring ,则声明这些bean并使用参数“locale = xx”调用URL来更改语言环境:
<bean id="localeResolver"
class="org.springframework.web.servlet.i18n.SessionLocaleResolver">
<property name="defaultLocale" value="es" />
</bean>
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**" />
<bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor" />
</mvc:interceptor>
</mvc:interceptors>
答案 5 :(得分:0)
如果您使用的是JSF,可以使用
FacesContext.getCurrentInstance().getViewRoot().setLocale(Locale.ENGLISH);
但是,有时您需要使用注册语言向特定用户发送一些消息,然后您需要使用此
messages.getLocale().setDefault(
new Locale(comm.getAccount().getLocale()));