大家都知道,现在的网站基本上都为用户提供了选择头像的功能,以提高用户的个性化服务。
小编近期做了一个关于新注册的用户的头像选择的问题。拿出来跟大家一块儿分享一下。小编做的是用户注册后会有一个默认头像,如果用户不满意,用户可以到个人中心去
选择系统提供的头像。
那么问题来了
1.如果用户注册的时候给一个死的图像的url可能不行,万一以后网站要换用户的默认的头像的化还需要懂代码。那么这个系统是多么不健壮啊。所以用户头像应该是可以配置
的。
2.如果用户头像是可以配置的,用户注册直接查出默认头像的连接读出来即可,那万一以后使用系统的管理员比较傻,上传了两个或者多个头像,那岂不会报错。
3.原型上画的是给出用户默认的12个头像供用户选择。我刚开始写的是把12个头像查出来,一个一个地放到map中在前台写12个image分别附上12个url,这样也有问题,如果
后台人员上传了的头像是少于或者多于12个,那可怎么办,系统照样会报错。
针对以上的问题,本人做了一个小小的优化。用户在注册完成后,首先会去查用户默认的头像,返回默认头像的list集合,如果没有默认头像,则src=“#”,防止报错。如果查
出来的默认的头像数是>=1的,那么,随机从中选取一个作为用户的默认头像。
对于加载供用户选择的头像的处理,则是返回一个集合到前台,进行遍历,有多少个就遍历多少个,这样也不置于犯错。
下面是对注册时用户默认头像的处理代码:
//用户
List<ContFacus> listDefaultHead = singletonCache.getUserDefaultHead();
if(listDefaultHead.size() > 0){
//随机选取一个头像
Random r=new Random();
int i = listDefaultHead.size();
String defualtHead = listDefaultHead.get(r.nextInt(i)).getImagePath();
String str = defualtHead;
//String [] strs = str.split("[focus_image/]");
String a = str.substring(str.length()-30,str.length());
custIndividual.setHeadPhoto(a);
}
下面是对加载用户头像的的处理代码:
controller返回页面中的方法:
//String imgServerPath = properties.getProperty("imgServerPath");
String imgServerPath = "/puhuilicai/";
map.put("imagePath", imgServerPath);
map.put("images", list);
return "account/stttopBindHeadPic";
页面上遍历:
<%
var i=0;
var divname="img";
var name=null;
for(loan in images){
i++;
name=divname+i;
var path = imagePath + loan.imagePath;
%>
<img src="${path}" id="${name}" οnclick="javascript:changesrc(${i})"/>
(本人页面使用的是beetl模板)