如何显示格式化的联系号码?

时间:2014-07-04 01:50:12

标签: java hibernate jpa struts2 formatting

我有一个名为电话号码的字段,其值为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"); 

3 个答案:

答案 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