我将电话号码存储为数据库中的字符串.它将被存储为"1234567890".我想向用户显示它并将其格式化为(12)3456-7890如何使用JSF 2.0执行此操作?我尝试了以下,但它不起作用:
<h:outputText value="1234567890">
<f:convertNumber pattern="(##) ####-####"/>
</h:outputText>
Run Code Online (Sandbox Code Playgroud)
该<f:convertNumber>应用DecimalFormat在幕后,这不是设计时考虑到的电话号码.
您需要创建自定义Converter并getAsString()使用常用String方法(例如substring()和朋友)在实现中执行所需的工作.
@FacesConverter("phoneConverter")
public class PhoneConverter implements Converter{
@Override
public String getAsString(FacesContext context, UIComponent component, Object modelValue) {
String phoneNumber = (String) modelValue;
StringBuilder formattedPhoneNumber = new StringBuilder();
// ...
return formattedPhoneNumber.toString();
}
@Override
public Object getAsObject(FacesContext context, UIComponent component, String submittedValue) {
// Conversion is not necessary for now. However, if you ever intend to use
// it on input components, you probably want to implement it here.
throw new UnsupportedOperationException("Not implemented yet");
}
}
Run Code Online (Sandbox Code Playgroud)
使用方法如下:
<h:outputText value="1234567890" converter="phoneConverter" />
Run Code Online (Sandbox Code Playgroud)