首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用h:graphicImage单击事件更改语言

用h:graphicImage单击事件更改语言
EN

Stack Overflow用户
提问于 2013-09-15 10:09:19
回答 1查看 1.9K关注 0票数 0

我想改变语言点击其中一个图像。有两个图像,其中一个是土耳其语,另一个是英语。如果我点击到英语语言就是英语。另一个是带有onclick.Here的土耳其语,是managed和xhtml;

代码语言:javascript
复制
public class DilSecimBean {

private boolean isTurkey = true;
private final Locale TR = new Locale("tr");
private final Locale EN = Locale.ENGLISH;

public Locale getLocale() {
    if (isTurkey) {
        return TR;
    } else {
        return EN;
    }
}

public void swapLocale() {
    System.out.println("SWAP LOCALE");
    switchLocale();
}

private void switchLocale() {
    isTurkey = !isTurkey;
    Locale newLocale;
    if (isTurkey) {
        newLocale = TR;
    } else {
        newLocale = EN;
    }
    FacesContext.getCurrentInstance().getViewRoot().setLocale(newLocale);

}

}

这是我的xhtml;

代码语言:javascript
复制
 <h:panelGrid columns="3" border="0">
            <h:outputText value="Dil seçimi : " />
            <h:graphicImage alt="JSF"
                        url="/resimler/tb.png"
                        width="20" height="20">
                <f:ajax event="click" execute="#{dilSecimBean.swapLocale()}"/>
            </h:graphicImage>
            <h:graphicImage alt="JSFS"
                        url="/resimler/ib.png"
                        width="20" height="20">
                <f:ajax event="click" execute="#{dilSecimBean.swapLocale()}"/>
            </h:graphicImage>

        </h:panelGrid>

当我点击图像时,language.How上没有变化,我可以用图像单击事件来更改语言吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-15 17:01:16

首先,您应该有一个表单来提交第二个:为什么要在这里使用ajax?这里的任何方法都是一个有用的例子。

代码语言:javascript
复制
<h:form>
      <h:commandLink action="#{localeChanger.turkishAction}">
        <h:graphicImage library="images" name="de_flag.gif"
                        style="border: 0px; margin-right: 1em;"/>
     </h:commandLink>
     <h:commandLink action="#{localeChanger.englishAction}">
        <h:graphicImage library="images"
                        name="en_flag.gif" style="border: 0px"/>
     </h:commandLink>
         </h:form>

对于托管bean:

代码语言:javascript
复制
       import java.io.Serializable;
       import java.util.Locale;
      import javax.inject.Named;
      // or import javax.faces.bean.ManagedBean;
        import javax.enterprise.context.SessionScoped;
     // or import javax.faces.bean.SessionScoped;
        import javax.faces.context.FacesContext;

  @Named // or @ManagedBean
 @SessionScoped
 public class LocaleChanger implements Serializable {

public String TurkishAction() {
    FacesContext context = FacesContext.getCurrentInstance();
    context.getViewRoot().setLocale(new Locale("tr"));
    return null;
}

public String englishAction() {
    FacesContext context = FacesContext.getCurrentInstance();
    context.getViewRoot().setLocale(Locale.ENGLISH);
    return null;
   }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18811139

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档