日期:2014-05-16  浏览次数:20422 次

JSF学习笔记二
JSF国际化信息:

  资源文件:
  资源文件名由 basename+语言+地区 组成,如message_zh_CN.properties
  使用<f:loadBundle>来指定载入信息资源。如<f:loadBundle basename="message" var="msg"/>
  <h:outputText value="#{msg.titleTest}"/>
   应用<f:view locale="zh_CN">直接指定所要用的语系。

  在faces-config.xml中设置语系:
<application>
   <locale-config>
<default-locale>en</default-locale>
<supported-locale>zh_CN</supported-locale>
   </locale-config>
</application>
  <default-locale>必须有一个,<supported-locale>可以有多个。

JSF中使用Bean:
  页面中注意区分jsp表示语言${}和JSF表示语言#{},注意JSF的标签上的属性设定时,只接受JSF表示语言。
 
  bean的配置与设定:
JSF预定义会读取faces-config.xml中关于bean的定义,如果想自行设置定义文件的名称,则在web.xml中设置:
<context-param>
  <param-name>javax.faces.CONFIG_FILES</param-name>
  <param-value>/WEB-INF/beans1.xml,/WEB-INF/beans2.xml</param-value>
</context-param>

  在其他bean中取得设置的bean:
FacesContext context = FacesContext.getCurrentInstance();
//得到bean
ValueBinding binding = context.getApplication().createValueBinding("#{user}");
//如果是得到bean的属性
//ValueBinding binding = context.getApplication().createValueBinding("#{user.name}");
User user = (User)binding.getValue(context);

  启动bean时,自动设置bean的初始值:
<managed-bean>
<managed-bean-name>user</managed-bean-name>
<managed-bean-class>com.zdx.po.User</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
<!-- 设置name初始值为zdx -->
<managed-property>
<property-name>name</property-name>
<value>zdx</value>
</managed-property>
<!-- 设置password初始值为null -->
<managed-property>
<property-name>name</property-name>
<null-value/>
</managed-property>
</managed-bean>

  标准转换器:
  <f:convertDateTime pattern="dd/MM/yyyy"/>
  <f:convertNumber />
  自定义转换器:
  实现javax.faces.convert.Converter接口。
  例如:

public class MyConvert implements Converter {

public Object getAsObject(FacesContext arg0, UIComponent arg1, String arg2) {

String [] strs = arg2.split(",");

User user = new User();
user.setName(strs[0]);
user.setPassword(strs[1]);

return user;
}

public String getAsString(FacesContext arg0, UIComponent arg1, Object arg2) {

String name = ((User)arg2).getName();
String password = ((User)arg2).getPassword();

return name+","+password;
}

}
然后我们就应该告诉JSF这件事(在faces-config.xml中注册):
<converter>
<converter-id>com.zdx.User</converter-id>
<converter-class>com.zdx.MyConvert</converter-class>
</converter>
在jsf页面中使用转换器的话,就要指定所要使用的转换器标识(converter-id),如:
<h:outputText value="#{user}" converter="com.zdx.User"/>或者
<h:outputText value="#{user}">
  <f:converter converterId="com.zdx.User"/>
</h:outputText>