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>