我有一个名为电话号码的字段,其值为0833888999,我想格式化为以下内容,如下所示:0833 888 999.
The answer that Rachana offered blew 适用于少数国家,但并非所有国家都适用。
因此, 我正在使用this Google library格式化来自不同国家/地区的联系电话号码;但问题是,在数据库中保留联系号后我无法在数据库中搜索它们,例如库会格式化不同国家的不同国家的联系号码,例如在它们之间添加空格或“ - ”使得休眠无法找到它们。
+18182223333 >>> +1 818-222-3333
+441135558888 >>> +44 113 555 8888
休眠
.add(Restrictions.ilike("user.phone","+18182223333");
答案 0 :(得分:3)
试试这个
<s:property value="getText('{0,number,0### ### ###}',{phone})"/>
其中,phone=0833888999
希望这也有助于您看到 Using Struts2 Tags to Formatting Numbers
您将清楚了解数字格式
答案 1 :(得分:2)
我认为您应该将原始电话号码(例如0833888999)保留在数据库中,并且View负责对其进行格式化。
您可以拥有一个单独的表“country_phone_format”,其中包含 country_id 和 phone_format ,您可以将phone_format作为@ManyToOne实体获取这样您就可以同时拥有原始数据和格式,以便将其正确显示在视图中。
可以使用二级缓存轻松缓存PhoneFormat,因为它们很少被修改。
答案 2 :(得分:2)
就像弗拉德提到的那样,您应该将原始电话号码(例如0833888999)保存在数据库中(如果您愿意,可以将其保存为国家和地区代码),并且有责任根据视图对其进行格式化。
您可以使用Type Conversion转换为您想要的格式,并利用您提到的Google图书馆。像下面这样的东西可以让你开始(缩写只是为了得到它的要点):
public class MyConverter extends StrutsTypeConverter {
public Object convertFromString(Map context, String[] values, Class toClass) {
String phoneNr = values[0]
MyPhoneObject phone = googleLibrary.doYourMagic(phoneNr);
return phone;
}
public String convertToString(Map context, Object o) {
googleLibrary.parseString( ((MyPhoneObject)o).rawPhoneNr() );
}
}
不要忘记在xwork-conversion.properties
中注册转换器my.PhoneObject=path.to.MyConverter