html代码:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Insert title here</title>
<link rel="stylesheet" href="ext/resources/css/ext-all.css" />
<script type="text/javascript" src="ext/adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="ext/ext-all.js"></script>
<script type="text/javascript" src="ext/ext-lang-zh_CN.js"></script>
<script type="text/javascript" src="js/edit.js"></script>
</head>
<body>
</body>
</html>
edit.js代码:
function editRecord() { } function deleteRecord() { var grid = Ext.getCmp("table"); var sm = grid.getSelectionModel(); var sel = sm.getSelections(); if(sm.hasSelection()){ Ext.MessageBox.show({ title:"删除用户记录", buttons:Ext.MessageBox.YESNOCANCEL, msg:"您确定要删除"+sel.length+"个用户吗?", fn:function(btn){ if(btn=="yes"){ var ids = "["; for(var i=0;i<sel.length;i++){ var record = sel[i]; ids+=record.get("id")+","; } ids = ids.substring(0,ids.length-1)+"]"; alert(ids); var conn = new Ext.data.Connection(); conn.request({ url:"http://localhost:8686/myjob1/delete", params:{ action:"delete", ids:ids }, success:function(resp,opt){ for(var i=0;i<sel.length;i++){ var record = sel[i]; grid.getStore().remove(record); } }, failure:function(resp,opt){ Ext.MessageBox.alert("错误","不能删除用户信息!"); } }); } } }); } //grid.getStore().reload(null); } function addRecord() { var ds_model = Ext.data.Record.create([ "id", "name", "password", "sex", "age" ]); var grid = Ext.getCmp("table"); var page = grid.getBottomToolbar(); //pageCount = getRowSize()/getPageSize() + ((getRowSize()%getPageSize())==0?0:1); var store = grid.getStore(); var row = store.getTotalCount(); var pageSize = store.getCount(); var pageCount = Math.ceil(row/pageSize); alert(row+"--"+pageSize+"--"+pageCount); page.changePage(pageCount); var conn = new Ext.data.Connection(); conn.request({ url:"http://localhost:8686/myjob1/add", method:"post", params:{ name:"NewUser" }, success:function(resp,opt){ var insert_id = Ext.util.JSON.decode(resp.responseText).id; grid.getStore().insert(0,new ds_model({ id:insert_id, name:"NewUser", password:"", sex:"true", age:0 })); grid.startEditing(0,0); }, failure:function(resp,opt){ alert(resp+">>>>>>>>"+opt); Ext.MessageBox.alert("","不能插入新用户!"); } }); //grid.getStore().reload(null); } function rendererSex(val) { if (val == true) return "<h4 style='color:green'>男</h4>"; else return "<h4 style='color:red'>女</h4>"; } function selectAll(){ var sm = Ext.getCmp("table").getSelectionModel(); sm.selectAll(); } function disSelect(){ //Ext.MessageBox.alert("","你点击了编辑"); var grid = Ext.getCmp("table"); var sm = Ext.getCmp("table").getSelectionModel(); for(var i=grid.getView().getRows().length-1;i>=0;i--){ if(sm.isSelected(i)){ sm.deselectRow(i); }else{ sm.selectRows([i],true); // rsm.selectRow(i,true); 也可以 } } } function saveRecord(){ alert("save"); var grid = Ext.getCmp("table"); } Ext.onReady(function(){ var idEditor = new Ext.form.TextField(); var nameEditor = new Ext.form.TextField(); var passwordEditor = new Ext.form.TextField(); var sexEditor = new Ext.form.TextField(); var ageEditor = new Ext.form.TextField(); var sm = new Ext.grid.CheckboxSelectionModel(); var cm = new Ext.grid.ColumnModel([ new Ext.grid.RowNumberer(), sm, {header:"id", dataIndex:"id", width: 120,sortable: true,editor:idEditor}, {header:"用户名", dataIndex:"name", width: 120,sortable: true,editor:nameEditor}, {header:"口令", dataIndex:"password", width: 120,sortable: true,editor:passwordEditor}, {header:"性别", dataIndex:"sex", width: 80,editor:sexEditor}, {header:"年龄", dataIndex:"age", width: 120,sortable: true,editor:ageEditor} ]); var store = new Ext.data.Store({ proxy: new Ext.data.HttpProxy({url:"http://localhost:8686/myjob1/list"}), reader: new Ext.data.JsonReader({totalProperty:'total', root:'list'}, [ {name: 'id'}, {name: 'name'}, {name: 'password'}, {name: 'sex'}, {name: 'age'} ]) }); store.load({params:{start:0, limit:20}}); var grid = new Ext.grid.EditorGridPanel({ renderTo:Ext.getBody(), title:"user info", height:650, id:"table", store:store, autoSizeColumns: true, cm:cm, sm:sm, tbar: new Ext.Toolbar({ items:[ {id:'selectAll',text:'全选', handler:selectAll}, {id:'disSelect',text:'反选', handler:disSelect}, {id:'delete',text:'删除', handler:deleteRecord}, {id:'add',text:"添加",handler:addRecord}, {id:'edit',text:"保存",handler:saveRecord} ] }), bbar: new Ext.PagingToolbar({ pageSize: 20, store: store, displayInfo: true, displayMsg: '显示第{0}条到第{1}记录,一共{2}条', emptyMsg: '没有记录' }), listeners:{ afteredit:function(e){ alert(e.record.get("id")); var conn = new Ext.data.Connection(); conn.request({ url:"update", params:{ id:e.record.get("id"), field:e.field, value:e.value }, success:function(resp,opt){ e.record.commit(); }, failure:function(resp,opt){ e.record.reject(); } }); } } }); });
struts.xml代码:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"> <struts> <constant name="struts.objectFactory" value="spring" /> <constant name="struts.i18n.encoding" value="UTF-8" /> <package name="user" namespace="/" extends="json-default"> <action name="login" class="userAction" method="login"> <result name="login"> /login.jsp </result> <result name="success" type="redirect"> /welcome.jsp </result> </action> <action name="loginJSON" class="userAction" method="loginJSON"> <result type="json"/> </action> <action name="list" class="userAction" method="list"> <result type="json"/> </action> <action name="delete" class="userAction" method="delete"> <result type="json"/> </action> <action name="add" class="userAction" method="add"> <result type="json"/> </action> <action name="update" class="userAction" method="update"> <result type="json"/> </action> </package> </struts>
UserAction.java代码
package action;
import java.util.Arrays;
import java.util.List;
import org.apache.struts2.json.annotations.JSON;
import service.UserService;
import util.Pager;
import mode.User;
import com.opensymphony.xwork2.ActionSupport;
public class UserAction extends ActionSupport{
private User user;
private UserService service;
private List<User> list;
private int limit;
private int start;
private int total;
private boolean success = true;
private String ids;
private String id;
private String name;
private String password;
private boolean sex;
private int age;
private String field;
private String value;
public String getField() {
return field;
}
public void setField(String field) {
this.field = field;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public boolean isSex() {
return sex;
}
public void setSex(boolean sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public boolean isSuccess() {
return success;
}
public void setSuccess(boolean success) {
this.success = success;
}
@JSON(serialize=false)
public String getIds() {
return ids;
}
public void setIds(String ids) {
this.ids = ids;
}
public int getTotal() {
return total;
}
public void setTotal(int total) {
this.total = total;
}
@JSON(serialize=false)
public int getLimit() {
return limit;
}
public void setLimit(int limit) {
this.limit = limit;
}
@JSON(serialize=false)
public int getStart() {
return start;
}
public void setStart(int start) {
this.start = start;
}
public List<User> getList() {
return list;
}
public void setList(List<User> list) {
this.list = list;
}
@JSON(serialize=false)
public UserService getService() {
return service;
}
public void setService(UserService service) {
this.service = service;
}
@JSON(serialize=false)
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public String login(){
if(service.login(user.getName(), user.getPassword())){
return SUCCESS;
}
return LOGIN;
}
public String loginJSON(){
if(service.login(name, password)){
success = true;
}else {
success = false;
}
return SUCCESS;
}
/*
* 1 1 5
* 2 6 10
* size*pagenow-pagesize+1=start
* pagenow = start+pagesize-1/size
*/
public String list(){
System.out.println(start+" ------------------------ "+limit);
/*0 20
*
*/
int now = (start+1+limit-1)/limit;
System.out.println(now);
Pager pager = new Pager(limit, -1,now);
list = service.list(pager);
total = pager.getRowSize();
return SUCCESS;
}
public String delete(){
System.out.println(ids);
String[] idArr = ids.substring(1,ids.length()-1).split(",");
System.out.println(Arrays.toString(idArr)+" "+idArr.length);
service.deleteUserByIdArray(idArr);
success=true;
return SUCCESS;
}
public String add(){
if(user==null){
user = new User();
user.setName(name);
user.setAge(age);
user.setPassword(password);
user.setSex(sex);
id = service.regsiter(user);
success=true;
System.out.println("add user-----");
}
return SUCCESS;
}
public String update(){
if(id.startsWith("ext")){
User user = new User();
if(field.equals("name")){
user.setName(value);
}else if(field.equals("password")) {
user.setPassword(value);
}else if(field.equals("sex")){
user.setSex(Boolean.parseBoolean(value));
}else if(field.equals("age")){
user.setAge(Integer.parseInt(value));
}else{
}
service.regsiter(user);
}else{
System.out.println("id:"+id+";field:"+field+";value:"+value);
User user = service.getUserById(id);
if(field.equals("name")){
user.setName(value);
}else if(field.equals("password")) {
user.setPassword(value);
}else if(field.equals("sex")){
user.setSex(Boolean.parseBoolean(value));
}else if(field.equals("age")){
user.setAge(Integer.parseInt(value));
}else{
}
service.updateUserById(user);
}
success=true;
return SUCCESS;
}
}