保存时校验用户名的有效唯一性

本文是说在新增修改用户时,保存前的校验,校验有效的用户名的唯一性:

1.在新增用户的时候,输入用户名之后,给input框加一个onblur事件,然后验证用户名唯一性,在后台方法中,先查询一下数据库中是否存在输入的用户名,如果存在并且为有效的,则提示“登录名称已存在,请重新输入”,若存在但为无效的或者不存在的时候提示“登录名称可以使用”,然后保存即可。代码如下:

Js代码:

function checkUser() {

if($("#logonName").val() != ""){

$.post("${ctx }/mhlfuser/checkUser?logonName="+$("#logonName").val(),

{ Action: "post"},

function (data, textStatus){

//初始值

if(data.result){

$("#showMsg").html("登录名称已存在,请重新输入");

$("#showMsg").css("color","red");

$("#logonName").val("");

}else{

$("#showMsg").html("登录名称可以使用");

$("#showMsg").css("color","green");

}

}

, "json");

}else{

$("#showMsg").html("请输入登录名称");

$("#showMsg").css("color","red");

return false;

}

}

Html代码:

<tr id="result">

<td width="16%" style="text-align:right;">工号:</td>

<td width="26%" >

<c:if test="${obj.userId == null }">

&nbsp;<input type="text" class="dfinput" id="logonName" name="user.logonName" onblur="checkUser()" value="${obj.user.logonName}" datatype="*1-15" nullmsg="请输入登录名称!" errormsg="长度不超过15个汉字!"/>

</c:if>

<%-- 如果是修改的话用户名不能修改--%>

<c:if test="${obj.userId != null }">

${obj.user.logonName} <input type="hidden" id="logonName" name="user.logonName" value="${obj.user.logonName}" />

</c:if>

</td>

<td style="text-align:left;" width="30%">&nbsp;<span id="showMsg"></span>

</td>

</tr>

后台方法:

1>保存方法:

/**

* 新增,修改功能的保存操作.

*/

@At

@Ok("jsp:jsp.authority.user.success")

public void saveUser(@Param("::user.") User user, String authorityIds,String fileId,HttpSession session, HttpServletRequest request){

if(user != null){

if(Strings.isEmpty(user.getUserId())){

user.setUserId(UUID.randomUUID().toString().replaceAll("-", ""));

@SuppressWarnings("unused")

User sessionUser = (User)request.getSession().getAttribute(SystemConstants.SYSTEM_USER);

dao.insert(user);

}else{

User okuser = dao.fetch(User.class, user.getUserId());

okuser.setLogonName(user.getLogonName());

okuser.setDisplayName(user.getDisplayName());

okuser.setStatus(user.getStatus());

okuser.setPhone(user.getPhone());

okuser.setDuty(user.getDuty()); okuser.setIsLeader(user.getIsLeader());

dao.update(okuser);

}

}

}

2> checkUser方法,在最下边。

2.在修改用户的时候,例如:

现在已经存在一个用户名为zhangsan的用户且为有效,如果此时再新增一条用户名为zhangsan的用户的话,就会提示已经存在;

这时候,如果把那条有效的zhangsan的用户名 的有效性修改为无效之后,我再新增zhangsan就可以新增;

此时会出现一个小问题,那就是此时数据库中存在两条用户名为zhangsan的用户,一条为有效,一条为无效且都是可以进行修改的;

如果此时想把无效的那条zhangsan改成有效的话是不可行的,因为已经存在有效的一样的用户名,所以,我在选择是否有效的时候加了个onchange验证,在选择有效的时候需要验证有效性,选无效的时候则不需要验证,代码如下:

Js代码:

function checkStatus() {

var status = $('input:radio[name="user.status"]:checked').val();

if(status == '1'){

checkUser1();

}

}

function checkUser1() {

if($("#logonName").val() != ""){

$.post("${ctx }/mhlfuser/checkUser?logonName="+$("#logonName").val(),

{ Action: "post"},

function (data, textStatus){

//初始值

if(data.result){

alert("该用户已经存在并且有效,不能修改!");

$('input:radio[name="user.status"][value=0]').attr("checked",true);

}

}

, "json");

}

}

html代码:

<tr id="result">

<td style="text-align:right;">是否有效:</td>

<td >&nbsp;

<input type="radio" id="status" name="user.status" onchange="checkStatus()" value="1" <c:if test="${obj.user.status == '1' || obj.user.status == null}">checked="checked"</c:if>/>有效

<input type="radio" id="status" name="user.status" onchange="checkStatus()" value="0" <c:if test="${obj.user.status == 0}">checked="checked"</c:if>/>无效

</td>

<td>&nbsp;</td>

</tr>

后台方法:

/**

* 验证用户是否存在.

*/

@At

@Ok("json")

public Map<String, Object> checkUser(String logonName){

Map<String, Object> result = new HashMap<String, Object>();

if(!Strings.isEmpty(logonName)){

User user = dao.fetch(User.class, Cnd.where("logonName", "=", logonName).and("status","=","1"));

if(user != null){

result.put("result", true);

}else{

result.put("result", false);

}

}else{

result.put("result", false);

}

return result;

}

猜你喜欢

转载自blog.csdn.net/qq_35030421/article/details/87968787