读《JavaServer Faces 核心编程(第3版)》一书的记录—— 第 4 章 标准 JSF 标签——案例 flags

All + All -

flags

  • + -第一步:创建案例
    • 使用随书源码在NetBeans中创建项目
  • + -第二步:运行案例
    • 在IDE中运行该案例
  • + -第三步:阅读案例结构
    • + -Web
      • + -页面文件
        • index.xhtml
        • thankYou.xhtml
      • + -资源文件夹resources
        • + -子文件夹images
          • 图像文件de_flag.gif
          • 图像文件en_flag.gif
    • + -源包
      • + -java包com.corejsf
        • LocaleChanger.java
        • UserBean.java
        • messages.properties
        • messages_de.properties
    • + -
      • JDK 1.7
      • GlassFish Server 3.1.2
    • + -配置文件
      • beans.xml
      • faces-config.xml
      • web.xml
  • + -第四步:阅读案例新功能
    • + -第一层面:视图
      • + -页面文件
        • + -index.xhtml
          • *标题显示内容:Using Command Linke
          • *上部显示:德国旗帜和英国旗帜图案的“链接”组件
          • *当单击德国旗帜图案的链接时,页面显示的文本,由英文改变为德文
          • *当单击英国旗帜图案的链接时,页面显示的文本,由德文改变为英文
        • + -thankYou.xhtml
          • 与案例personalData相同
    • + -第二层面:控制
      • + -页面控制器
        • + -UserBean
          • + -*属性
            • 保存用户名、密码和自我介绍信息的3个String类型的属性
          • + -*方法
            • 上述3个属性的读写方法
        • + -LocaleChanger
          • *germanAction()
          • *englishAction()
      • + -数据控制器
        • UserBean
    • + -第三层面:模型
      • UserBean
    • + -第四层面:配置
      • 无新内容
  • + -第五步:详解新技术--使用命名链接组件
    • + -第一层面:视图
      • + -视图文件
        • + -index.xhtml
          • + -*关于德国和英国旗帜的图案
            • + -1,旗帜图案的文件在哪里?
              • 在web根下的resources目录下(该目录是JSF2.0对页面资源的引用规定的一个固定目录)的子目录images内
              • + -文件
                • en_flag.gif(是英国国旗图像文件)
                • de_flag.gif(是德国国旗图像文件)
            • + -2,在哪个组件上应用了这些图案文件?
              • 在组件h:commandLink的子组件h:graphicImage中应用了图像文件
                • *用组件h:graphicImage,来引入图像文件,在该组件出现的地方
                • *用组件h:graphicImage的特性library,来指定图像文件所在(在固定文件夹resources下)的能够文件夹,例如:library="images"
                • *用组件library的特性name,来指定图像文件的名称,例如:name="en_flag.gif"
          • + -*关于德国和英国旗帜图案上的链接
            • + -1,点击旗帜图案后页面上如何能够显示对应国家的语言文字呢?
              • (1)旗帜图案所在的组件,是个链接组件h:commandLink
              • (2)链接组件上的动作事件,由该组件的特性action指定的方法来处理
                • *这里指定的是一个JSF表达式
                  • #{localeChanger.germanAction}
                  • #{localeChanger.englishAction}
                • *表达式是页面后台控制器LocaleChanger实例对象的一个方法
                  • germanAction()
                  • englishAction()
              • (3)处理事件的方法都干了哪些事儿?
                • *这两个方法返回的都是null,因为这里不需要导航到其它也没去
                • *方法中设置了本地语言为链接所代表的那个国家的语言
                  • 英文为:Locale.ENGLISH
                  • 德文为:Locale.GERMAN
            • 2,具体后台管理器的功能,参见类LocaleChanger
        • + -thankYou.xhtml
          • 无新内容
      • + -视图资源
        • JSF2.0资源规定目录:resource
        • 存放资源文件的子目录:images
        • + -图像文件
          • 德国国旗图像文件de_flag.gif
          • 英国国旗图像文件en_flag.gif
    • + -第二层面:控制
      • + -页面控制器
        • + -UserBean
          • 无新内容
        • + -LocaleChanger
          • + -方法
            • 处理设置应用场所为英国的方法:englishAction;返回null
            • 处理设置应用场所为德国的方法:germanAction;返回null
      • + -数据控制器
        • + -UserBean
          • 无新内容
    • + -第三层面:模型
      • + -UserBean
        • 无新内容
    • + -第四层面:配置
      • 无新内容
    • + -第五层面:国际化
      • + -英文消息文件
        • com.corejsf.messages.properties
      • + -德文消息文件
        • com.corejsf.messages_de.properties
      • + -不同语言的消息文件的命名
        • 在英文消息文件的基础上,添加下划线“_”和类Locale中对国家声明的常量字符,
          例如:对英国的消息文件如果命名为messages
          那么,对德国的消息文件必须命名为messages_de
                     对简体中文的消息文件必须命名为messages_zh_CN
                     对台湾中文的消息文件必须命名为messages_zh_TW

      • 注意:这里不讨论太多国际化问题,它超出了该案例的主要问题
  • + -第六步:应用JSF API
    • + -1,找出英国英文的“本地对象”

      • Locale.ENGLISH

      + -2,找出德国德文的“本地对象”

      • Locale.GERMAN

      + -3,找的Faces的上下文对象

      • FacesContext context = FacesContext.getCurrentInstance();

      + -4,从Faces上下文对象中,找出“用户界面视图的根组件”,然后在根视图中设置“本地对象”

      • context.getViewRoot().setLocale(Locale.ENGLISH);

      5,设置英国的本地对象的代码可以如下所示:
             FacesContext context = FacesContext.getCurrentInstance();
             UIViewRoot viewRoot=context.getViewRoot();
             viewRoot.setLocale(Locale.ENGLISH);

      6,设置德国的本地对象的代码可以如下所示:
             FacesContext context = FacesContext.getCurrentInstance();
             UIViewRoot viewRoot=context.getViewRoot();
             viewRoot.setLocale(Locale.GERMAN);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值