我后台
package com.fw.action;import java.sql.SQLException;
import java.util.List;import javax.servlet.http.HttpServletRequest;import org.apache.struts2.ServletActionContext;import com.fw.beans.User;
import com.fw.dao.UserDao;
import com.opensymphony.xwork2.ActionSupport;public class UserAction extends ActionSupport{ private UserDao userdao;
public UserDao getUserdao() {
return userdao;
} public void setUserdao(UserDao userdao) {
this.userdao = userdao;
} private User user;
public User getUser() {
return user;
} public void setUser(User user) {
this.user = user;
}
public void validate() {
if("".equals(user.getUname())){
this.addFieldError("name", "<font color=red>用户名不能为空!</font>");
}
if("".equals(user.getUpass())){
this.addFieldError("upass", "<font color=red>密码不能为空!</font>");
}
super.validate();
}
public String logic(){
/*System.out.println("----------");
User u=new User();
u.setUname("quan");
u.setUpass("lei");
userdao.adduser(u);
*/
/*
User u=userdao.findid(5);
System.out.println(u.getUpass());
*/
User u;
try {
u = userdao.login(user.getUname(), user.getUpass());
} catch (Exception e) {
System.out.println("登录失败!");
return null;
//e.printStackTrace();
}
System.out.println("登录成功!");
System.out.println(user.getUname()+"\n"+user.getUpass());
return null;
}
public String findall(){
System.out.println("--------");
List<User> list=userdao.findall();
for (User user : list) {
System.out.println(user.getUname());
}
HttpServletRequest request=ServletActionContext.getRequest();
request.setAttribute("list", list);
return "list";
}}前台
<%@page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" %>
<%@ taglib uri="/struts-tags" prefix="s" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title></title>
</head>
<body> <a href="user!logic.action">----</a>
<s:debug></s:debug>
<s:form action="user!logic.action" method="post">
<s:textfield name="user.uname" label="用户名"></s:textfield>
<s:fielderror></s:fielderror>
<s:textfield name="user.upass" label="密码"></s:textfield>
<s:submit value="logic"></s:submit>
</s:form>
<a href="user!findall.action">查询所有</a>
</body>
</html>
我查询所有就出错,因为我后台validate()方法user.getUname()为空,我点击查询所有应该我不需要验证了,但是它必须经过验证方法所有出空值异常,如果把验证方法去掉就不出错,我该怎么做?
package com.fw.action;import java.sql.SQLException;
import java.util.List;import javax.servlet.http.HttpServletRequest;import org.apache.struts2.ServletActionContext;import com.fw.beans.User;
import com.fw.dao.UserDao;
import com.opensymphony.xwork2.ActionSupport;public class UserAction extends ActionSupport{ private UserDao userdao;
public UserDao getUserdao() {
return userdao;
} public void setUserdao(UserDao userdao) {
this.userdao = userdao;
} private User user;
public User getUser() {
return user;
} public void setUser(User user) {
this.user = user;
}
public void validate() {
if("".equals(user.getUname())){
this.addFieldError("name", "<font color=red>用户名不能为空!</font>");
}
if("".equals(user.getUpass())){
this.addFieldError("upass", "<font color=red>密码不能为空!</font>");
}
super.validate();
}
public String logic(){
/*System.out.println("----------");
User u=new User();
u.setUname("quan");
u.setUpass("lei");
userdao.adduser(u);
*/
/*
User u=userdao.findid(5);
System.out.println(u.getUpass());
*/
User u;
try {
u = userdao.login(user.getUname(), user.getUpass());
} catch (Exception e) {
System.out.println("登录失败!");
return null;
//e.printStackTrace();
}
System.out.println("登录成功!");
System.out.println(user.getUname()+"\n"+user.getUpass());
return null;
}
public String findall(){
System.out.println("--------");
List<User> list=userdao.findall();
for (User user : list) {
System.out.println(user.getUname());
}
HttpServletRequest request=ServletActionContext.getRequest();
request.setAttribute("list", list);
return "list";
}}前台
<%@page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" %>
<%@ taglib uri="/struts-tags" prefix="s" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title></title>
</head>
<body> <a href="user!logic.action">----</a>
<s:debug></s:debug>
<s:form action="user!logic.action" method="post">
<s:textfield name="user.uname" label="用户名"></s:textfield>
<s:fielderror></s:fielderror>
<s:textfield name="user.upass" label="密码"></s:textfield>
<s:submit value="logic"></s:submit>
</s:form>
<a href="user!findall.action">查询所有</a>
</body>
</html>
我查询所有就出错,因为我后台validate()方法user.getUname()为空,我点击查询所有应该我不需要验证了,但是它必须经过验证方法所有出空值异常,如果把验证方法去掉就不出错,我该怎么做?
解决方案 »
- 高手请进 ckeditor(在线编辑器)菜鸟问题求解答?
- 哪位大侠知道 dom4j 如何创建CDATA节点。。。
- java 截取图片 图片不清楚
- 困扰一天的购物车问题!
- RequestDispatcher 跳转后对象成空指针
- jspSmartUpload包下载中文文件名的问题
- struts里如果有多个输入框的属性指向同一个,actionForm里是不是自动会给数组赋值?
- ireport如何实现强制分页?
- 请高手指教: wap编程--怎样用jsp实现手机与web数据库的无状连接
- &符号后面出现amp 怎么写才对?
- 如何拖动列宽的表格后,浏览器会把拖动后的列宽记住,免得每次都去拖动?
- jquery load js
先判断list有值吗
在设断点看看
你没理解我的意思,我是说如果我不用登录的方法提交(from表单),后台验证的方法validate() 里的user.getUname()的就得不到值,因为我用<a href="user!findall.action">查询所有</a>直接进入后台查询方法,所以user.getUname()是空值异常,根本就进入不了findall()这个方法,谈何查询所有,如果我把validate()去掉就进入该方法查询所有了,问题这个validate()要验证登录的方法,但是我查询方法又不需要,但是validate() 这个方法只要你进入action就必须调用,我不知道怎么处理
晕,请问你理解validation这个方法吗