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>