抱歉本人学艺不精,还不清楚怎么完整上传整个项目,而且也怕不小心上传一些公司的代码会侵权,所以只以部分自己写的代码的形式上传.
数据表
Dao层:
fyTestDao.java:
package 不.要.在.意.fyTest.dao;
import java.util.List;
import 不.要.在.意.CrudDao;
import 不.要.在.意.MyBatisDao;
import 不.要.在.意.fyTest.entity.FyTestUser;
@MyBatisDao
public interface FyTestDao extends CrudDao<FyTestUser>{
List<FyTestUser> getFyTestUserList(FyTestUser fyTestUser); //查
void insertFyTestUser(FyTestUser fyTestUser); //增
List<FyTestUser> getFyTestUserListForCheckTuid(FyTestUser fyTestUser); //在新增数据的前一刻使用,检查新建的数据的工号是否跟旧数据有重复
void updateFyTestUserForStatus(FyTestUser fyTestUser); //改状态
void updateFyTestUserForAll(FyTestUser fyTestUser); //改全部
void deleteFyTestUser(FyTestUser fyTestUser); //删
}
fyTestDao.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="不.要.在.意.fyTest.dao.FyTestDao" >
<!-- 查,默认展示所有表,搜索框里非空时进行对应搜索 -->
<select id="getFyTestUserList" resultType="FyTestUser">
select
t.tuid as"tuid"
,t.name as"name"
,t.sex as"sex"
,t.dep as"departments"
,t.status as"status"
,t.tel as"telephone"
,t.create_time as"createTime"
,t.amend_time as"amendTime" <!-- 读取出来的列名都会转成as设定后的"xxxx"名 -->
from fy_test t <!-- 让"t"来指代数据表fy_test,所以上面的tuid等数据列名前才会带有"t." -->
where tuid=tuid <!-- 占位用,只是为了配合下面的判断语句if和and的组合 -->
<if test="name != null and name != ''">
and t.name like '%${name}%'
</if>
<if test="tuid != null and tuid != ''">
and t.tuid like '%${tuid}%'
</if>
order by t.amend_time desc <!-- 让读取出来的表按照amend_time(修改时间)从大到小的顺序排序 -->
</select>
<!-- 增,插入一条新的数据 -->
<insert id="insertFyTestUser">
insert into fy_test(
tuid
,name
,sex
,dep
,status
,tel
,create_time
,amend_time
)
values(
#{tuid}
,#{name}
,#{sex}
,#{departments}
,${status} <!-- #{}和${}的区别就是#把输入内容当做字符串输入,$把输入内容直接输入,#可以防止SQL注入,能用#别用$,此处$当练手用 -->
,#{telephone}
,sysdate
,sysdate
)
</insert>
<!-- 在新增数据的前一刻使用,检查新建的数据的工号是否跟旧数据有重复 -->
<select id="getFyTestUserListForCheckTuid" resultType="FyTestUser">
select
t.tuid as"tuid" <!-- 经测试,只选一个tuid功能也是正常使用.全选的推测:方便维护 -->
,t.name as"name"
,t.sex as"sex"
,t.dep as"departments"
,t.status as"status"
,t.tel as"telephone"
,t.create_time as"createTime"
,t.amend_time as"amendTime"
from fy_test t
where upper(t.tuid) = upper(#{tuid}) <!-- upper 所有小写字母转换为大写字母的大小写转换函数 -->
order by t.amend_time desc
</select>
<!-- 改,考虑到员工的状态会频繁切换,所以独立设置一个改变状态的功能-->
<update id="updateFyTestUserForStatus">
update fy_test t
set t.status=${status}
,t.amend_time=sysdate
where t.tuid=#{tuid}
</update>
<!-- 改,将这个功能在前端的实现按钮放在主界面上,逻辑上就是根据tuid定位,更改其他位置的内容 -->
<update id="updateFyTestUserForAll">
update fy_test t
set
t.name=#{name}
,t.sex=#{sex}
,t.dep=#{departments}
,t.status=${status}
,t.tel=#{telephone}
,t.amend_time=sysdate
where tuid=#{tuid}
</update>
<!-- 删,十分正常的删 -->
<delete id="deleteFyTestUser">
delete from fy_test t
where t.tuid=#{tuid}
</delete>
</mapper>
Service层:
fyTestService.java:
package 不.要.在.意.fyTest.service;
import java.util.List;
import 不.要.在.意.Service;
import 不.要.在.意.Transactional;
import 不.要.在.意.Page;
import 不.要.在.意.CrudService;
import 不.要.在.意.fyTest.dao.FyTestDao;
import 不.要.在.意.fyTest.entity.FyTestUser;
import 不.要.在.意.FunctionReturn;
@Service //对于 service层的类,在类上用 @Service注解声明
@Transactional(readOnly =false) //表示该类需要读写事务支持
//老规矩,不管crudService,写上只是防止以后会有其他相配合的功能要使用它
public class FyTestService extends CrudService<FyTestDao,FyTestUser> {
//获取page(查)
public Page<FyTestUser> getFyTestPage(Page<FyTestUser> page,FyTestUser fyTestUser){
fyTestUser.setPage(page);
page.setList(dao.getFyTestUserList(fyTestUser));
return page;
}
//fytest表单页面(增)
public FunctionReturn saveFyTestUser(FyTestUser fyTestUser){
FunctionReturn functionReturn = new FunctionReturn();
//1.设置数据表时将工号设计为了主键(不允许有重复数据),所以要将这种情况设置为"储存失败"
List<FyTestUser> checkList=dao.getFyTestUserListForCheckTuid(fyTestUser);
if(checkList.size()>0){ //checkList.size返回的数据是数据条数,当数据大于0时代表Dao层在数据库里查到了相同工号的数据
functionReturn.setReturnCode(1); //工号重复是不允许的,返回值"1",代表着错误
functionReturn.setReturnMsg("添加失败:表单中已存在该工号,请确认");
return functionReturn; //因为if成真,工号确实有重复,所以不进行保存操作,直接在此处return,2操作也就不会进行了
}
//2.保存fytest表单信息
dao.insertFyTestUser(fyTestUser);
functionReturn.setReturnCode(0);
functionReturn.setReturnMsg(fyTestUser.getName()+"["+fyTestUser.getTuid()+"]数据添加成功");
return functionReturn;
}
//导出表单数据(查)
public List<FyTestUser> getFyTestUserExportList(FyTestUser fyTestUser){
return dao.getFyTestUserList(fyTestUser);
}
//移除表单数据 (删)
public FunctionReturn deleteFyTestUser(FyTestUser fyTestUser){
FunctionReturn functionReturn = new FunctionReturn();
dao.deleteFyTestUser(fyTestUser);
functionReturn.setReturnCode(0);
functionReturn.setReturnMsg("移除成功");
return functionReturn;
}
//改状态(改)
public FunctionReturn updateFyTestUserForStatus(FyTestUser fyTestUser){
FunctionReturn functionReturn=new FunctionReturn();
dao.updateFyTestUserForStatus(fyTestUser);
functionReturn.setReturnCode(0);
functionReturn.setReturnMsg("状态更改成功");
return functionReturn;
}
//改全部(改)
public FunctionReturn updateFyTestUserForAll(FyTestUser fyTestUser){
FunctionReturn functionReturn=new FunctionReturn();
dao.updateFyTestUserForAll(fyTestUser);
functionReturn.setReturnCode(0);
functionReturn.setReturnMsg("整体更改成功");
return functionReturn;
}
}
Web层:
fyTestController.java:
package 不.要.在.意.fyTest.web;
import java.util.List;
import javax.servlet.http.HttpServletRequest; //HttpServletRequest接收来自客户端的请求
import javax.servlet.http.HttpServletResponse; //HttpServletResponse发出对客户端的响应
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model; //它允许控制器向视图传递数据
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import 不.要.在.意.Page;
import 不.要.在.意.DateUtils;
import 不.要.在.意.Exceptions;
import 不.要.在.意.ExportExcel;
import 不.要.在.意.BaseController;
import 不.要.在.意.fyTest.entity.FyTestUser;
import 不.要.在.意.fyTest.service.FyTestService;
import c不.要.在.意.FunctionReturn;
/**
* FyTest
*
*/
@Controller
@RequestMapping(value="${adminPath}/fyTest")
public class FyTestController extends BaseController {
@Autowired
FyTestService fyTestService;
//查询整个数据表,分页,每页30行数据,展示
@RequiresPermissions("fyTest:fyTestUser:view") //注解,操作该功能需要有 "fyTest:fyTestUser:view"的权限
@RequestMapping(value={"/fyTestUsers/list"}) //一个用来处理请求地址映射的注解,运行这个功能时的url路径就会是".../fyTestUsers/list"(已验证)
public String fyTestUserList(FyTestUser fyTestUser,HttpServletRequest request,HttpServletResponse response,Model model){
Page<FyTestUser> page = fyTestService.getFyTestPage(new Page<FyTestUser>(request,response),fyTestUser);//获取了表的数据
model.addAttribute("page",page); //将数据存储在 Model对象中,然后在视图层中使用该数据
return"modules/fyTest/fyTest"; //跟前端页面返回有关系,表示进行完当前操作返回到哪个页面
}
//填写"新增信息"的页面
@RequiresPermissions("fyTest:fyTestUser:edit")
@RequestMapping(value={"/fyTestUsers/form"})
public String fyTestUsersForm(FyTestUser fyTestUser, HttpServletRequest request, HttpServletResponse response, Model model){
return "modules/fyTest/fyTestForm";
}
//"整体修改"的页面
@RequestMapping(value={"/fyTestUsers/update"})
public String fyTestUsersUpdate(FyTestUser fyTestUser, HttpServletRequest request, HttpServletResponse response, Model model){
return "modules/fyTest/fyTestUpdate";
}
//功能,新增信息
@RequiresPermissions("fyTest:fyTestUser:edit")
@RequestMapping(value={"/fyTestUsers/save"})
public String fyTestUsersSave(FyTestUser fyTestUser, Model model,RedirectAttributes redirectAttributes){
try{
FunctionReturn fr = fyTestService.saveFyTestUser(fyTestUser); //1查重2插入新数据
addMessage(redirectAttributes,fr.getReturnMsg()); //打印在Service层获取到的消息
}catch(Exception ex){
addMessage(redirectAttributes, fyTestUser.getName()+"["+fyTestUser.getTuid()+"]添加新数据失败");
logger.debug(Exceptions.getStackTraceAsString(ex));
ex.printStackTrace();
}
return "redirect:"+adminPath+"/fyTest/fyTestUsers/list";
}
//导出表单数据
@RequiresPermissions("fyTest:fyTestUser:view")
@RequestMapping(value = "/fyTestUsers/export",method=RequestMethod.POST)
public String exportfile(FyTestUser fyTestUser,HttpServletRequest request, HttpServletResponse response, RedirectAttributes redirectAttributes){
try{
String fileName="FyTest"+DateUtils.getDate("yyyyMMDDHHmmss")+".xlsx";
List<FyTestUser>exportList= fyTestService.getFyTestUserExportList(fyTestUser);
new ExportExcel("fyTest", FyTestUser.class).setDataList(exportList).write(response, fileName).dispose(); return null;
}catch (Exception e){
addMessage(redirectAttributes,"导出信息失败!失败信息:"+e.getMessage());
}
return "redirect:"+adminPath+"/fyTest/fyTestUsers/list";
}
//修改状态
@RequiresPermissions("fyTest:fyTestUser:edit")
@RequestMapping(value = "/fyTestUsers/updateStatus")
public String fyTestUserUpdateStatus(FyTestUser fyTestUser, HttpServletRequest request, Model model, RedirectAttributes redirectAttributes){
try{
FunctionReturn fr = fyTestService.updateFyTestUserForStatus(fyTestUser);
addMessage(redirectAttributes,fr.getReturnMsg());
}catch(Exception ex){
addMessage(redirectAttributes,"状态更新失败");
logger.debug(Exceptions.getStackTraceAsString(ex));
ex.printStackTrace();
}
return "redirect:"+adminPath+"/fyTest/fyTestUsers/list";
}
//修改整体
@RequiresPermissions("fyTest:fyTestUser:edit")
@RequestMapping(value = "/fyTestUsers/updateAll")
public String fyTestUserUpdateAll(FyTestUser fyTestUser, HttpServletRequest request, Model model, RedirectAttributes redirectAttributes){
try{
FunctionReturn fr = fyTestService.updateFyTestUserForAll(fyTestUser);
addMessage(redirectAttributes,fr.getReturnMsg());
}catch(Exception ex){
addMessage(redirectAttributes,"更新失败");
logger.debug(Exceptions.getStackTraceAsString(ex));
ex.printStackTrace();
}
return "redirect:"+adminPath+"/fyTest/fyTestUsers/list";
}
//删除数据
@RequiresPermissions("fyTest:fyTestUser:edit")
@RequestMapping(value = "/fyTestUsers/delete")
public String fyTestUserRemove(FyTestUser fyTestUser, HttpServletRequest request, Model model, RedirectAttributes redirectAttributes){
try{
FunctionReturn fr = fyTestService.deleteFyTestUser(fyTestUser);
addMessage(redirectAttributes,fr.getReturnMsg());
}catch(Exception ex){
addMessage(redirectAttributes,"删除失败");
logger.debug(Exceptions.getStackTraceAsString(ex));
ex.printStackTrace();
}
return "redirect:"+adminPath+"/fyTest/fyTestUsers/list";
}
}
数据载体:
fyTestUser.java:
package 不.要.在.意.fyTest.entity;
//import导入本类中会引用的其他类
import java.util.Date; //时间类
import 不.要.在.意.DataEntity; //老大定义的类,操作数据用
import 不.要.在.意.ExcelField; //老大定义的注解类,在此处用来设置导出exl文件时各数据在文件中的一些排版属性等
public class FyTestUser extends DataEntity<FyTestUser> {
private String tuid; //工号
private String name; //姓名
private String sex; //性别
private String departments; //部门
private int status; //状态
private String telephone; //电话号
private Date createTime; //创建时间
private Date amendTime; //修改时间
@ExcelField(title="工号", align=2, sort=5)
//返回tuid的字符串
public String getTuid() {
return tuid;
}
//存储tuid的值
public void setTuid(String tuid) {
this.tuid = tuid;
}
//其他同上
@ExcelField(title="姓名", align=2, sort=10)
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@ExcelField(title="性别", align=2, sort=15)
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
@ExcelField(title="部门", align=2, sort=20)
public String getDepartments() {
return departments;
}
public void setDepartments(String departments) {
this.departments = departments;
}
@ExcelField(title="状态", align=2, sort=25)
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
@ExcelField(title="电话号", align=2, sort=30)
public String getTelephone() {
return telephone;
}
public void setTelephone(String telephone) {
this.telephone = telephone;
}
@ExcelField(title="创建时间", align=2, sort=35)
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
@ExcelField(title="创建时间", align=2, sort=40)
public Date getAmendTime() {
return amendTime;
}
public void setAmendTime(Date amendTime) {
this.amendTime = amendTime;
}
}
前端:
fyTest.jsp:
<%@ page contentType="text/html;charset=UTF-8"%>
<%@ include file="/WEB-INF/views/include/taglib.jsp"%>
<html>
<head>
<title>ftTest</title>
<meta name="decorator" content="default"/>
<script type="text/javascript">
<!-- function...,新建函数对象-->
function loading(){
loading('正在查询,请稍等...');
}
function page (n,s){
$("#pageNo").val(n);
$("#pageSize").val(s);
$("#searchForm").attr("action","${ctx}/fyTest/fyTestUsers/list");
$("#searchForm").submit();
return false;
}
<!-- function(...){...},直接使用括号()将函数转换为表达式,实现在定义的时候直接调用它 -->
$(document).ready(function() {
$("#btnSubmit").click(function(){
$("#searchForm").attr("action","${ctx}/fyTest/fyTestUsers/list");
top.$('.jbox-body .jbox-icon').css('top','55px');
});
$("#btnExport").click(function(){
top.$.jBox.confirm("确认要导出数据吗?","系统提示",function(v,h,f){
if(v=="ok"){
$("#searchForm").attr("action","${ctx}/fyTest/fyTestUsers/export");
$("#searchForm").submit();
}
},{buttonsFocus:1});
top.$('.jbox-body .jbox-icon').css('top','55px');
});
})
</script>
</head>
<body>
<ul class="nav nav-tabs">
<li class="active"><a href="${ctx}/fyTest/fyTestUsers/list">fyTest</a></li>
<shiro:hasPermission name="fyTest:fyTestUser:edit">
<li><a href="${ctx}/fyTest/fyTestUsers/form">添加数据</a></li>
</shiro:hasPermission>
</ul>
<form:form id="searchForm" modelAttribute="financeOrder" action="${ctx}/fyTest/fyTestUsers/list" method="post" class="breadcrumb form-search">
<input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}" />
<input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}" />
<ul class="ul-form">
<li><label>姓名:</label>
<input name="name" id="name" type="text" maxlength="100" class="input-large" value="${fyTestUser.name}"/>
</li>
<li><label>工号:</label>
<input name="tuid" id="tuid" type="text" maxlength="100" class="input-large" value="${fyTestUser.tuid}"/>
</li>
<li class="btns">
<input id="btnSubmit" class="btn btn-primary" type="submit" value="查询" onclick="loading()"/>
<input id="btnExport" class="btn btn-primary" type="button" value="导出数据"/>
</li>
<li class="clearfix"></li>
</ul>
</form:form>
<sys:message content="${message}" />
<!-- 表格的排版布局 -->
<table id="contentTable"
class="table table-striped table-bordered table-condensed">
<thead>
<tr>
<th>*</th>
<th>工号</th>
<th>姓名</th>
<th>性别</th>
<th>部门</th>
<th>状态</th>
<th>电话</th>
<th>创建时间</th>
<th>修改时间</th>
</tr>
</thead>
<tbody>
<c:forEach items="${page.list}" var="fyTestUser" varStatus="status">
<!-- 从entity取数据 -->
<tr>
<td>${status.index + 1}</td>
<td>${fyTestUser.tuid}</td>
<td>${fyTestUser.name}</td>
<td>${fyTestUser.sex}</td>
<td>${fyTestUser.departments}</td>
<td>
<c:if test="${fyTestUser.status ==1}">工作中</c:if>
<c:if test="${fyTestUser.status ==2}">放假中</c:if>
<c:if test="${fyTestUser.status ==3}">已离职</c:if>
<shiro:hasPermission name="fyTest:fyTestUser:edit">
<a href="${ctx}/fyTest/fyTestUsers/updateStatus?tuid=${fyTestUser.tuid}&status=1"
onclick="return confirmx('确认更改 <b>${fyTestUser.name}[${fyTestUser.tuid}]</b>的状态吗?', this.href)">上班</a>
</shiro:hasPermission>
<shiro:hasPermission name="fyTest:fyTestUser:edit">
<a href="${ctx}/fyTest/fyTestUsers/updateStatus?tuid=${fyTestUser.tuid}&status=2"
onclick="return confirmx('确认更改 <b>${fyTestUser.name}[${fyTestUser.tuid}]</b>的状态吗?', this.href)">下班</a>
</shiro:hasPermission>
</td>
<td>${fyTestUser.telephone}</td>
<td><fmt:formatDate value="${fyTestUser.createTime}" pattern="yyyy-MM-dd HH:mm:ss"/></td>
<td><fmt:formatDate value="${fyTestUser.amendTime}" pattern="yyyy-MM-dd HH:mm:ss"/></td>
<td>
<shiro:hasPermission name="fyTest:fyTestUser:edit">
<a href="${ctx}/fyTest/fyTestUsers/update?tuid=${fyTestUser.tuid}"
>整体修改 </a>
</shiro:hasPermission>
<shiro:hasPermission name="fyTest:fyTestUser:edit">
<a href="${ctx}/fyTest/fyTestUsers/delete?tuid=${fyTestUser.tuid}"
onclick="return confirmx('确认删除 <b>${fyTestUser.name}[${fyTestUser.tuid}]</b>的信息吗?(此次删除数据无法复原)', this.href)">删除 </a>
</shiro:hasPermission>
</td>
</tr>
</c:forEach>
</tbody>
</table>
<div class="pagination">${page}</div>
</body>
</html>
fyTestForm.jsp:
<%@ page contentType="text/html;charset=UTF-8" %>
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ include file="/WEB-INF/views/include/taglib.jsp"%>
<html>
<head>
<title>新增测试数据</title>
<meta name="decorator" content="default"/>
<script type="text/javascript">
$(document).ready(function() {
console.log($("#tuid").val());
var type = $("#type").val();
if(type == "1"){
/* $('#tuid').attr("readonly","readonly") */
$('#name').attr("readonly","readonly")
$('#sex').attr("readonly","readonly")
$('#telephone').attr("readonly","readonly")
}
//$("#value").focus();
$("#inputForm").validate({
rules: {
name: {
required: true
},
status: {
required: true
},
telephone: {
required: true
}
},
messages: {
tuid: {
required: "请输入正确的工号",
}
},
submitHandler: function(form){
loading('正在提交,请稍等...');
form.submit();
},
errorContainer: "#messageBox",
errorPlacement: function(error, element) {
$("#messageBox").text("输入有误,请更正.");
if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
error.appendTo(element.parent().parent());
} else {
error.insertAfter(element);
}
}
});
});
</script>
</head>
<body>
<ul class="nav nav-tabs">
<li><a href="${ctx}/fyTest/fyTestUsers/list">fyTest</a></li>
<li class="active"><a href="${ctx}/fyTest/fyTestUsers/form">添加数据</a></li>
</ul><br/>
<form:form id="inputForm" modelAttribute="fyTestUser" action="${ctx}/fyTest/fyTestUsers/save" method="post" class="form-horizontal">
<input id="type" type="hidden" value="${type}"/>
<sys:message content="${message}"/>
<div class="control-group">
<label class="control-label">工号:</label>
<div class="controls">
<form:input path="tuid" htmlEscape="false" maxlength="200" />
</div>
</div>
<div class="control-group">
<label class="control-label">姓名:</label>
<div class="controls">
<form:input path="name" htmlEscape="false" maxlength="100" class="required "/>
</div>
</div>
<div class="control-group">
<label class="control-label">性别:</label>
<div class="controls">
<form:input path="sex" htmlEscape="false" maxlength="10" />
</div>
</div>
<div class="control-group">
<label class="control-label">部门:</label>
<div class="controls">
<form:input path="departments" htmlEscape="false" maxlength="20" class="required "/>
</div>
</div>
<div class="control-group">
<label class="control-label">状态:</label>
<div class="controls" style="">
<select name="status"}>
<option disabled selected>请选择</option>
<option value="1">工作中</option>
<option value="2">休假中</option>
<option value="3">已离职</option>
</select>
</div>
</div>
<div class="control-group">
<label class="control-label">电话号码:</label>
<div class="controls">
<form:input path="telephone" htmlEscape="false" maxlength="20" class="required "/>
</div>
</div>
<div class="form-actions">
<input id="btnSubmit" class="btn btn-primary" type="submit" value="保 存"/>
<input id="btnCancel" class="btn" type="button" value="返 回" onclick="history.go(-1)"/>
</div>
</form:form>
</body>
</html>
fyTestUpdate.jsp:
<%@ page contentType="text/html;charset=UTF-8" %>
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ include file="/WEB-INF/views/include/taglib.jsp"%>
<html>
<head>
<title>整体修改</title>
<meta name="decorator" content="default"/>
<script type="text/javascript">
$(document).ready(function() {
var type = $("#type").val();
if(type == "1"){
$('#tuid').attr("readonly","readonly")
$('#name').attr("readonly","readonly")
$('#sex').attr("readonly","readonly")
$('#telephone').attr("readonly","readonly")
}
//$("#value").focus();
$("#updateForm").validate({
rules: {
tuid: {
required: true //要求输入不能为空
},
name: {
required: true
},
status: {
required: true
},
telephone: {
required: true
}
},
messages: {
tuid: {
required: "请输入正确的工号",
rangelength: "请输入正确的工号"
}
},
submitHandler: function(form){
loading('正在提交,请稍等...');
form.submit();
},
errorContainer: "#messageBox",
errorPlacement: function(error, element) {
$("#messageBox").text("输入有误,请更正.");
if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
error.appendTo(element.parent().parent());
} else {
error.insertAfter(element);
}
}
});
});
</script>
</head>
<body>
<ul class="nav nav-tabs">
<li><a href="${ctx}/fyTest/fyTestUsers/list">fyTest</a></li>
<li class="active"><a href="${ctx}/fyTest/fyTestUsers/update">修改数据</a></li>
</ul><br/>
<form:form id="updateForm" modelAttribute="fyTestUser" action="${ctx}/fyTest/fyTestUsers/updateAll" method="post" class="form-horizontal">
<input id="type" type="hidden" value="${type}"/>
<sys:message content="${message}"/>
<form:hidden path="tuid" id="tuid"/>
<div class="control-group">
<label class="control-label">工号:</label>
<div class="controls">
${fyTestUser.tuid}
</div>
</div>
<div class="control-group">
<label class="control-label">姓名:</label>
<div class="controls">
<form:input path="name" htmlEscape="false" maxlength="100" class="required "/>
</div>
</div>
<div class="control-group">
<label class="control-label">性别:</label>
<div class="controls">
<form:input path="sex" htmlEscape="false" maxlength="10" />
</div>
</div>
<div class="control-group">
<label class="control-label">部门:</label>
<div class="controls">
<form:input path="departments" htmlEscape="false" maxlength="20" class="required "/>
</div>
</div>
<div class="control-group">
<label class="control-label">状态:</label>
<div class="controls" style="">
<select name="status"}>
<option disabled selected>请选择</option>
<option value="1">工作中</option>
<option value="2">休假中</option>
<option value="3">已离职</option>
</select>
</div>
</div>
<div class="control-group">
<label class="control-label">电话号码:</label>
<div class="controls">
<form:input path="telephone" htmlEscape="false" maxlength="20" class="required "/>
</div>
</div>
<div class="form-actions">
<input id="btnSubmit" class="btn btn-primary" type="submit" value="保 存"/>
<input id="btnCancel" class="btn" type="button" value="返 回" onclick="history.go(-1)"/>
</div>
</form:form>
</body>
</html>
以上,完工(ゝω・)