个性化阅读
专注于IT技术分析

JSF标准转换器

JavaServer Faces提供了一组转换器。你可以使用它来转换组件数据。转换的目的是从Servlet API中获取基于String的数据, 并将其转换为强类型的Java对象。

javax.faces.convert包包含所有标准转换器。转换器是根据组件值所指向的EL表达式的类型隐式分配的。你还可以通过转换器ID访问这些转换器。下表显示了转换器类及其关联的转换器ID。

JSF转换器

转换器ID
BigDecimalConverter javax.faces.BigDecimal
BigIntegerConverter javax.faces.BigInteger
BooleanConverter javax.faces.Boolean
ByteConverter javax.faces.Byte
CharacterConverter javax.faces.Character
DateTimeConverter javax.faces.Datetime
DoubleConverter javax.faces.Double
EnumConverter javax.faces.Enum
FloatConverter javax.faces.Float
IntegerConverter javax.faces.Integer
LongConverter javax.faces.Long
NumberConverter javax.faces.Number
ShortConverter javax.faces.Short

标准错误消息与每个转换器关联。如果你在页面上的组件上使用任何转换器, 但转换器无法转换该组件的值, 则转换器的错误消息将显示在页面上。

标准转换器DateTimeConverter和NumberConverter都有自己的标签, 使用它们可以使用标签属性配置组件数据的格式。

JSF数据转换核心标签

标签 功能
f:converter 用于将任意转换器添加到父组件。
f:convertDateTime 它用于将DateTimeConverter实例添加到父组件。
f:convertNumber 它用于将NumberConverter实例添加到父组件。

JSF <f:converter>标记示例

// index.xhtml

<h:form>
<h:outputLabel for="username">User Name</h:outputLabel>
<h:inputText id="user-id" value="#{user.name}"/><br/>
<h:outputLabel for="age">Enter Age</h:outputLabel>
<h:inputText id="age-id" value="#{user.age}">
<f:converter converterId="javax.faces.Integer" />
</h:inputText><br/>
<h:commandButton action="response.xhtml" value="Submit"/>
</h:form>

// User.java

import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
@ManagedBean
@RequestScoped
public class User {
String name;
Integer age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}

// response.xhtml

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
<h:head>
<title>Response Page</title>
</h:head>
<h:body>
<h1>
<h:outputText value="Hello #{user.name}"/>
</h1>
<h3><h:outputLabel value="You are #{user.age} years old."></h:outputLabel></h3>
</h:body>
</html>

输出:

//索引页

JSF标准转换器1

//回应页面

JSF标准转换器2
赞(0)
未经允许不得转载:srcmini » JSF标准转换器

评论 抢沙发

评论前必须登录!