关于freemaker的一点使用技巧

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

要求对用户的后记号码中间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做了一点点改动,就能达到了想要的效果。

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

 

posted @ 2016-09-21 16:16  影卓后台开发人员  阅读(361)  评论(0编辑  收藏  举报