NutzCN Logo
问答 手册里的CRUD中,列表页点【查询]和新增没有反应
发布于 2725天前 作者 qq_c2a1a96b 1592 次浏览 复制 上一个帖子 下一个帖子
标签:

user/list.jsp



用户列表


var pageNumber = 1;
var pageSize = 10;
var base = '<%=request.getAttribute("base")%>';
function user_reload() {
$.ajax({
url : base + "/user/query",
data : $("#user_query_form").serialize(),
dataType : "json",
success : function(data) {
console.log(data);
$("#user_count").html("共"+data.pager.recordCount+"个用户, 总计"+data.pager.pageCount+"页");
var list_html = "";
console.log(data.list);
for (var i=0;i<data.list.length;i++) {
var user = data.list[i];
console.log(user);
var tmp = "\n" + user.id + " " + user.name
+ " 修改 "
+ " 删除 "
+ "";
list_html += tmp;
}
$("#user_list").html(list_html);
}
});
}
$(function() {
user_reload();
$("#user_query_btn").click(function() {
user_reload();
});
$("#user_add_btn").click(function() {
$.ajax({
url : base + "/user/add",
data : $("#user_add_form").serialize(),
dataType : "json",
success : function(data) {
if (data.ok) {
user_reload();
alert("添加成功");
} else {
alert(data.msg);
}
}
});
});
});
function user_update(userId) {
var passwd = prompt("请输入新的密码");
if (passwd) {
$.ajax({
url : base + "/user/update",
data : {"id":userId,"password":passwd},
dataType : "json",
success : function (data) {
if (data.ok) {
user_reload();
alert("修改成功");
} else {
alert(data.msg);
}
}
});
}
};
function user_delete(userId) {
var s = prompt("请输入y确认删除");
if (s == "y") {
$.ajax({
url : base + "/user/delete",
data : {"id":userId},
dataType : "json",
success : function (data) {
if (data.ok) {
user_reload();
alert("删除成功");
} else {
alert(data.msg);
}
}
});
}
};





条件
页数
每页

查询
---------------------------------------------------------------

</div>



---------------------------------------------------------------



用户名
密码
新增




@IocBean // 还记得@IocBy吗? 这个跟@IocBy有很大的关系哦 @At("/user") @Ok("json:{locked:'password|salt',ignoreNull:true}")//密码和salt也不可以发送到浏览器去 忽略空值 @Fail("http:500") @Filters(@By(type=CheckSession.class, args={"me", "/"})) public class UserModule { @Inject protected Dao dao; // 就这么注入了,有@IocBean它才会生效 @At public int count(){ return dao.count(User.class); } @At @Filters()//login方法设置为空的过滤器,不然就没法登陆了 public Object login(@Param("username")String name, @Param("password")String password, HttpSession session){ User user = dao.fetch(User.class, Cnd.where("name", "=", name).and("password", "=", password)); if (user == null) { return false; } else { session.setAttribute("me", user.getId()); return true; } } @At @Ok(">>:/") public void logout(HttpSession session) { session.invalidate(); } protected String checkuser(User user ,boolean create){ if(user == null){ return "对象为空"; } if(create){ if(Strings.isBlank(user.getName())||Strings.isBlank(user.getPassword())){ return "用户或者密码不能为空"; } }else{ if(Strings.isBlank(user.getPassword())){ return "密码不能为空"; } } String password =user.getPassword().trim(); if(6>password.length()||password.length()>12) return "密码长度不对"; user.setPassword(password); if(create){ int cnt=dao.count(User.class,Cnd.where("name","=",user.getName())); if(cnt !=0){ return "用户名已存在"; }else{ if(user.getId()<0){ return "用户标识错误"; } } } if(user.getName()!=null) user.setName(user.getName().trim()); return null; } @At public Object add(@Param("..")User user){ NutMap re=new NutMap(); //增加用户前先校验 String msg =checkuser(user,true); //如果存在,弹出提示 if(msg !=null){ return re.setv("ok",false).setv("msg",msg); } user.setCreateTime(new Date()); user.setUpdateTime(new Date()); user =dao.insert(user); return re.setv("ok",true).setv("data",user); } @At public Object update(@Param("..")User user){ NutMap re=new NutMap(); String msg=checkuser(user,false); if(msg !=null){ return re.setv("ok",false).setv("msg",msg); } user.setName(null); user.setCreateTime(null); user.setUpdateTime(new Date()); dao.updateIgnoreNull(user);//只更新密码和Salt return re.setv("ok",true); } @At public Object delete(@Param("id")int id,@Attr("me")int me ){ NutMap re=new NutMap(); if(me==id){ return re.setv("ok",false).setv("msg","不能删除当前用户"); } dao.delete(User.class,id);//再严谨一些的话,需要判断是否为>0 return re.setv("ok",true); } @At public Object query(@Param("name")String name,@Param("..")Pager pager){ Cnd cnd=Strings.isBlank(name)?null:Cnd.where("name","like","%"+name+"%"); QueryResult qr=new QueryResult(); qr.setList(dao.query(User.class,cnd,pager)); pager.setRecordCount(dao.count(User.class,cnd)); qr.setPager(pager); return qr;//默认分页是第1页,每页20条 } @At("/") @Ok("jsp:jsp.user.list") // 真实路径是 /WEB-INF/jsp/user/list.jsp public void index() { }
14 回复

后台日志呢?

来自炫酷的 NutzCN

2017-6-7 14:26:29.839 DEBUG [http-apr-8989-exec-6] Found mapping for [GET] path=/user/query : UserModule.query(UserModule.java:149)
2017-6-7 14:26:29.840 DEBUG [http-apr-8989-exec-6] Get 'userModule'<class net.wendal.nutzbook.module.UserModule>
2017-6-7 14:26:29.841 DEBUG [http-apr-8989-exec-6] >> Load definition name=userModule
2017-6-7 14:26:29.841 DEBUG [http-apr-8989-exec-6] Found IocObject(userModule) in AnnotationIocLoader(packages=[net.wendal.nutzbook])
2017-6-7 14:26:29.842 DEBUG [http-apr-8989-exec-6] >> Make...'userModule'<class net.wendal.nutzbook.module.UserModule>
2017-6-7 14:26:29.844 DEBUG [http-apr-8989-exec-6] Load class net.wendal.nutzbook.module.UserModule without AOP
2017-6-7 14:26:29.845 DEBUG [http-apr-8989-exec-6] Save object 'userModule' to [app]
2017-6-7 14:26:29.847 DEBUG [http-apr-8989-exec-6] Get 'dao'<interface org.nutz.dao.Dao>
2017-6-7 14:26:38.281 DEBUG [http-apr-8989-exec-9] Found mapping for [GET] path=/user/query : UserModule.query(UserModule.java:149)
2017-6-7 14:26:38.282 DEBUG [http-apr-8989-exec-9] Get 'userModule'<class net.wendal.nutzbook.module.UserModule>

是不是没登录?

来自炫酷的 NutzCN

我登录试试呢,谢谢!

可以了 谢谢Wendal!

再咨询下,为什么我的UserId的值总是0 而不是自增的呢,我用的是Oracle

0	yanghw	yanghw54
0	admin	123456
0	yangzl	1234569

表是你自己建的吗?还是用dao.create建的呢?

来自炫酷的 NutzCN

用Dao.create建的

删掉重建,看看有无生成触发器

来自炫酷的 NutzCN

是直接删除表吗,用的是Oracle 数据库, Dao建的表如下:
-- Create table
create table T_USER
(
id NUMBER(8),
name VARCHAR2(128),
password VARCHAR2(128),
salt VARCHAR2(128),
createtime DATE,
updatetime DATE
)
tablespace USERS
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 64K
next 1M
minextents 1
maxextents unlimited
);

User类的代码贴一下。

回复按钮旁边还有个按钮,加上才会代码高亮

来自炫酷的 NutzCN

@Table("t_user")
public class User {
private int id;
public int getId() {
return id;
}
public void setId(int 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 String getSalt() {
return salt;
}
public void setSalt(String salt) {
this.salt = salt;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
private String name;
private String password;
private String salt;
private Date createTime;
private Date updateTime;
}

```

@Id
private int id;
@Name
private String name;

来自炫酷的 NutzCN

全部可以了 自己没有添加注解,谢谢Wendal!

添加回复
请先登陆
回到顶部