我后台
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()为空,我点击查询所有应该我不需要验证了,但是它必须经过验证方法所有出空值异常,如果把验证方法去掉就不出错,我该怎么做?

解决方案 »

  1.   

    List<User> list=userdao.findall();
    先判断list有值吗   
    在设断点看看
      

  2.   


    你没理解我的意思,我是说如果我不用登录的方法提交(from表单),后台验证的方法validate() 里的user.getUname()的就得不到值,因为我用<a href="user!findall.action">查询所有</a>直接进入后台查询方法,所以user.getUname()是空值异常,根本就进入不了findall()这个方法,谈何查询所有,如果我把validate()去掉就进入该方法查询所有了,问题这个validate()要验证登录的方法,但是我查询方法又不需要,但是validate() 这个方法只要你进入action就必须调用,我不知道怎么处理
      

  3.   

    必须用struts验证么?你在前台用js不也行么
      

  4.   

    那你写个实体类的验证文件 比如:User-user-validation.xml
      

  5.   

    页面传个参数,根据这个参数,判断知否执行validation方法。
      

  6.   


    晕,请问你理解validation这个方法吗
      

  7.   

    validate里取session里面的值判断吧