关于freemaker的一点使用技巧

时间:2022-03-16 13:34:12
  • 在做国泰君安2016年中秋送电影票活动中,需要做这样一个手机页面,展示所有中奖用户的中奖信息。如下图:

关于freemaker的一点使用技巧

要求对用户的后记号码中间5位做隐藏处理。最开始的处理方法是在对用户实体的get()方法做处理

 1 /**
2 * @return the mobile
3 */
4 public String getMobile() {
5 if (mobile!=null&&mobile.matches("^0?[1][0-9]{10}$")) {
6 int le = mobile.length();
7 String start = mobile.substring(0, 3);
8 StringBuffer sb = new StringBuffer(start);
9 for (int i = 0; i < le - 6; i++) {
10 sb.append("*");
11 }
12 String end = mobile.substring(le - 3, le);
13 sb.append(end);
14 return sb.toString();
15 } else {
16 return "";
17 }
18 }
19
20 /**
21 * @param mobile
22 * the mobile to set
23 */
24 public void setMobile(String mobile) {
25 this.mobile = mobile;
26 }

但是不知道什么原因(原因以后补充),导致在用这个实体类向数据库中插入数据时,数据库的手机号码中间5位也被隐藏了。所以就放弃了这种方法。

我就来了一个比较蛮的方法,对查询回来的list数组for循环,但是由于list里面还包有一层list,所以一共有3重for循环,在有大量数据的情况下,响应会很慢,这种方法也不可用。

最后,王俊华帮我找到了一个简单的方法,就是在实体类中,新写了一个方法,作用相当于重载了前面提到的getMobile方法。

 1 /**
2 * @return the mobile
3 */
4 public String getShortMobile() {
5 if (StringUtils.isNotBlank(mobile)) {
6 int le = mobile.length();
7 String start = mobile.substring(0, 3);
8 StringBuffer sb = new StringBuffer(start);
9 for (int i = 0; i < le - 6; i++) {
10 sb.append("*");
11 }
12 String end = mobile.substring(le - 3, le);
13 sb.append(end);
14 return sb.toString();
15 } else {
16 return "";
17 }
18 }

再对页面返回的json做了一点点改动,就能达到了想要的效果。

关于freemaker的一点使用技巧

但是我暂时没有理解为什么可以这样做,等理解了再来补充。

 

相关文章