JSF2自定义组件编程系列 第八部分

 

 Ajax

 Ajax特性很简单,修改一下xhtml文件的commandButton代码如下:

    <h:commandButton id="clickButton" value="Click Me!" actionListener="#{inputBean.print}">

      <f:ajax execute="in" render="out" />

    </h:commandbutton>

    通过Ajax发送给Server的数据包含在id为"in"的inputText tag中,这里用execute标志要发送"in"的数据。render表示Ajax调用成功后,要重新渲染id为out的outputText tag。

 

  国际化

  我希望显示的信息能够支持两种语言:中文和英文。现在在src/main/java/com/freebird目录下添加language目录,然后添加两个文件messages_en.properties和messages_zh_CN.properties.然后在faces-config.xml文件中配置如下信息:

  <application>

    <locale-config>

      <default-locale>zh_CN</default-locale>

    </locale-config>

    <resource-bundle>

      <base-name>com.freebird.language.messages</base-name>

      <var>msg</var>

    </resource-bundle>

  </application>

 

  为了将properties文件打包到jar包的classes目录下,需要修改pom.xml文件,添加build如下:

  <build>

    <resources>

      <resource>

        <directory>src/main/java</directory>

        <includes>

          <include> **/*.properties</include>

        </includes>

      </resource>

      <resource>

        <directory>src/main/resources</directory>

        <includes>

          <include> **/*.xml</include>

 <include> **/*.xhtml</include>

        </includes>

      </resource>

    </resources>

  </build>

 

  好了现在修改一下xhtml文件的commandButton的value属性如下:

    <h:commandButton id="clickButton" value="#{msg.buttonTitle}" actionListener="#{inputBean.print}">

      <f:ajax execute="in" render="out" />

    </h:commandButton>

  JSF runtime会根据faces-config.xml文件中的配置查找classes/com/freebird/language目录下的messages_en或者messages_zh_CN文件,具体使用哪一个取决于使用jsfex的web应用程序的Local设置。如何在Web应用程序中实现国际化,修改Local请参考下面的文章:http://www.mkyong.com/jsf2/jsf-2-internationalization-example/

  先在messages_en.properties文件中添加一行:

buttonTitle=Click Me!

  然后应该在message_zh_CN.properties文件中添加相应的中文信息.注意,由于需要转码,不能直接写入中文,而是可以在临时文件中写入中文,然后通过一个工具转换。比如通常我会在messages_zh_CN文件中写入:buttonTitle=点击我.然后运行下面的命令:

native2ascii -encoding utf8 messages_zh_CN messages_zh_CN.properties

  为了方便起见,我在register.sh脚本中添加对应的命令,文件内容如下:

cd src/main/java/com/freebird/language/

native2ascii -encoding utf8 messages_zh_CN messages_zh_CN.properties

cd -

mvn clean install

mvn install:install-file -Dfile=target/jsfex-1.0.jar -DgroupId=com.freebird -DartifactId=jsfex -Dversion=1.0 -Dpackaging=jar

 

好了,部署成功。

未完,待续。下一节,将尝试着自定义JSF标准验证错误的信息。

 

你可能感兴趣的:(编程,Ajax,XHTML,properties,JSF,include)