本文概述
它用于将组件(用户输入)数据转换为Java Number类型。你可以通过将convertNumber标记嵌套在component标记内, 将组件的数据转换为java.lang.Number。 convertNumber标记具有几个属性, 可用于指定数据的格式和类型。
下表包含NumberConverter属性:
属性 | 类型 | 描述 |
---|---|---|
binding | NumberConverter | 它用于将转换器绑定到托管bean属性。 |
currencyCode | String | 它代表ISO 4217货币代码, 仅在格式化货币时使用。 |
currencySymbol | String | 它代表货币符号, 仅在格式化货币时适用。 |
for | String | 它与复合组件一起使用。它引用此标记嵌套在其中的复合组件内的对象之一。 |
groupingUsed | Boolean | 它指定格式化的输出是否包含分组分隔符。 |
integerOnly | Boolean | 它指定是否仅解析值的整数部分。 |
locale | 字符串或语言环境 | 其数字样式用于格式化或解析数据。 |
maxFractionDigits | int | 它用于设置在输出的小数部分中格式化的最大位数。 |
maxIntegerDigits | int | 它用于设置在输出的整数部分中格式化的最大位数。 |
minFractionDigits | int | 它用于设置在输出的小数部分中格式化的最小位数。 |
minIntegerDigits | int | 它用于设置在输出的整数部分中格式化的最小位数。 |
pattern | String | 它用于自定义格式设置模式, 该模式确定如何格式化和解析数字字符串。 |
type | String | 它用于指定是否将字符串值解析并格式化为数字, 货币或百分比。如果未指定, 则使用数字。 |
JSF NumberConverter示例
// index.xhtml
<h:form>
<h:outputLabel for="username">User Name</h:outputLabel>
<h:inputText id="user-id" value="#{user.name}"/><br/>
<h:outputLabel for="shirtPrice">Shirt Price</h:outputLabel>
<h:inputText id="shirtPrice-id" value="#{user.shirtCost}" autocomplete="off">
<f:convertNumber currencySymbol="$" type="currency"/>
</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;
int shirtPrice;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getShirtCost() {
return shirtPrice;
}
public void setShirtCost(int shirtPrice) {
this.shirtPrice = shirtPrice;
}
}
输出:
//索引页
//回应页面
JSF <f:converterNumber>示例2
在以下示例中, 我们将货币应用模式。可以定制此模式。下表包含一些货币模式示例。
值 | 图案 | 输出量 | 说明 |
---|---|---|---|
526894.989 | ###, ###.### | 526, 894.989 | 井号(#)表示一个数字, 逗号是分组分隔符的占位符, 句点是十进制分隔符的占位符。 |
526894.989 | ###.## | 526894.99 | 该值在小数点右边有三位数字, 但是模式只有两位。 format方法通过四舍五入来处理此问题。 |
852.89 | 000000.000 | 000852.890 | 此模式指定前导零和尾随零, 因为使用0字符代替了井号(#)。 |
52689.98 | $###, ###.### | $52, 689.98$200 | 模式中的第一个字符是美元符号($)。请注意, 它紧靠格式化输出中最左边的数字。 |
52689.98 | \ u00A5 ###, ###。### | ¥52, 689.98 | 该模式使用Unicode值00A5指定日元(¥)的货币符号。 |
// index.xhtml
<h:form>
<h:outputLabel for="username">User Name</h:outputLabel>
<h:inputText id="user-id" value="#{user.name}"/><br/>
<h:outputLabel for="shirtPrice">Shirt Price</h:outputLabel>
<h:inputText id="shirtPrice-id" value="#{user.shirtCost}" autocomplete="off">
</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;
int shirtPrice;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getShirtCost() {
return shirtPrice;
}
public void setShirtCost(int shirtPrice) {
this.shirtPrice = shirtPrice;
}
}
// response.xhtml
<h:body>
<h1> Hello, <h:outputText value="#{user.name}"/>
</h1>
<h:outputLabel value="Shirt's Price is: "></h:outputLabel>
<h:outputText value="#{user.shirtCost}">
<f:convertNumber pattern="$###" />
</h:outputText>
</h:body>
输出:
//索引页
//回应页面
评论前必须登录!
注册