gpt4 book ai didi

xpages - 如何设置资源包 "On-The-Fly"?

转载 作者:行者123 更新时间:2023-12-04 02:21:53 26 4
gpt4 key购买 nike

我有一个组合框,用户可以在其中选择可用的语言。该应用程序包含每种语言的属性文件。在页面的资源部分,资源包是根据用户配置文档中的语言标记(DE、EN ...)计算的。

有什么简单的方法可以根据组合框的值更改 onChange 事件中的语言吗?我想到了 context.setProperty(???)。有什么建议吗?

最佳答案

要在整个应用程序范围内实现此应用程序,您可以使用阶段监听器。在此示例中,要使用的语言环境存储在名为“Language”的 sessionScope 变量中。

只需向您的 XPage 添加一个组合框,其中包含所有允许的语言环境。

<xp:comboBox id="comboBox1" value="#{sessionScope.Language}">
<xp:selectItem itemLabel="Chinese" itemValue="zh"></xp:selectItem>
<xp:selectItem itemLabel="German" itemValue="de"></xp:selectItem>
<xp:selectItem itemLabel="Turkish" itemValue="tr"></xp:selectItem>
<xp:eventHandler event="onchange" submit="true" refreshMode="complete" />
</xp:comboBox>

然后你必须使用像这样的阶段监听器:

package ch.hasselba.xpages.jsf.core;

import javax.faces.context.FacesContext;
import javax.faces.application.Application;
import javax.faces.event.PhaseEvent;
import javax.faces.event.PhaseId;
import javax.faces.event.PhaseListener;
import javax.faces.component.UIViewRoot;
import java.util.Locale;
import java.util.Map;

public class LocalizationSetter implements PhaseListener {

private static final long serialVersionUID = -1L;
private static final String scopeVarName = "Language";
private static final String scopeName = "sessionScope";

public void afterPhase(PhaseEvent event) {}

public void beforePhase(PhaseEvent event) {
FacesContext facesContext = event.getFacesContext();
UIViewRoot view = facesContext.getViewRoot();
view.setLocale( getLanguage(facesContext) ) ;
}

public PhaseId getPhaseId() {
return PhaseId.RENDER_RESPONSE;
}

private Locale getLanguage( FacesContext facesContext ){
try{
Application app = facesContext.getApplication();
Object obj = app.getVariableResolver().resolveVariable(facesContext, scopeName );
Object lang = ((Map) obj).get( scopeVarName );
if( lang != null ){
return new Locale((String) lang);
}
}catch(Exception e){}

return Locale.getDefault();
}
}

您可以添加查找等以在“getLanguag()”方法中访问用户配置文件。

希望对你有帮助斯文

关于xpages - 如何设置资源包 "On-The-Fly"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9715393/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com