大家都知道,现在的网站基本上都为用户提供了选择头像的功能,以提高用户的个性化服务。

        小编近期做了一个关于新注册的用户的头像选择的问题。拿出来跟大家一块儿分享一下。小编做的是用户注册后会有一个默认头像,如果用户不满意,用户可以到个人中心去

选择系统提供的头像。

        那么问题来了

        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模板)