调试最开始出现的页面:
点击提交后出现的页面:
在第二个页面继续点击提交出现404错误这是写的类:
public class user_table extends ActionSupport implements Serializable{ /**
 * 
 */
private static final long serialVersionUID = 1L;
@Id
@Column(length=30)
private String account;
@Column(length=30)
private String keyword;
public String getAccount() {
return account;
}
public void setAccount(String account) {
this.account = account;
}
public String getKeyword() {
return keyword;
}
public void setKeyword(String keyword) {
this.keyword = keyword;
}

@Override
public void validate(){
if(account.equals("")){
addFieldError("account","必须输入用户名");
}else if(!Pattern.matches("\\w{13}", account)){
addFieldError("account","用户名必须是字母和数字的组合且长度为13");
}
if(keyword.equals("")){
addFieldError("keyword","必须输入用户密码");
}else if(!Pattern.matches("\\w{6,18}", keyword)){
addFieldError("keyword","密码必须是字母和数字的组合且长度在(6-18)范围内");
}
}

}

解决方案 »

  1.   

    这是我的配置文件:
    <?xml version="1.0" encoding="gbk"?>
    <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" 
                            "http://struts.apache.org/dtds/struts-2.0.dtd">
    <struts>
      <constant name="struts.devMode" value="true"></constant>
      <package name="default" extends="struts-default">
        <action name="Verification_code" class="action.verification_code">
            <result  type="stream">
              <param name="contentType">image/jpeg</param>
              <param name="inputName">inputStream</param>
            </result>
        </action>
        <action name="user_table" class="entity.user_table">
            <result name="input">login.jsp</result>
            <result>jspfile/sys_log.jsp</result>
        </action>
      </package>
    </struts>
      

  2.   

    <action name="user_table" class="entity.user_table">
            <result name="input">login.jsp</result>
            <result>jspfile/sys_log.jsp</result>
        </action>
    问题出现在这里,你要重写execute方法,并为登陆失败配置跳转到login.jsp的试图。
      

  3.   

    +1 验证后跳转到哪个页面是不是没配<action name="Verification_code" class="action.verification_code">
            <result  type="stream">
              <param name="contentType">image/jpeg</param>
              <param name="inputName">inputStream</param>
            </result>
        </action>
      

  4.   

    5楼,您好!这个好像没什么关系啊!这是我之前用struts2输出图片验证码用的,和这个输入验证有关系吗?
      

  5.   

    3楼的大侠,我重写了exetuce()方法还是不行啊!
      

  6.   

    @Override
    public String execute() throws Exception{
    return SUCCESS;
    }

    @Override
    public void validate(){
    if(account.equals("")){
    addFieldError("account","必须输入用户名");
    }else if(!Pattern.matches("\\w{13}", account)){
    addFieldError("account","用户名必须是字母和数字的组合且长度为13");
    }
    if(keyword.equals("")){
    addFieldError("keyword","必须输入用户密码");
    }else if(!Pattern.matches("\\w{6,18}", keyword)){
    addFieldError("keyword","密码必须是字母和数字的组合且长度在(6-18)范围内");
    }
    }
      

  7.   

    sorry,可能这里我搞错了,关键就是点击提交后经历validate execute之类最终仍要返回login页,才能接续接受validate
      

  8.   

    可是问题是我现在不知道要怎么写这个execute才好,刚刚写了个execute还是会出那样的错。
      

  9.   

    第二次点提交 有没有进validate?
      

  10.   

    SUCCESS对应哪个页面?(验证失败按理是FAILURE,不过这是业务逻辑问题)
      

  11.   

    设置断点看一下嘛,还有,报的那个错,是找不到那个路径下的jsp页面
      

  12.   

     <action name="user_table" class="entity.user_table">
            <result name="input">login.jsp</result>
            <result name="success">jspfile/login.jsp</result>
        </action>
      

  13.   

    断点调试显示第二次有进validate
      

  14.   

    是不是namespace的原因?返回后路径变了,如果你的validate发的请求是使用相对路径的话,会找到页面的,检查一下地址栏里的路径是否正确
      

  15.   

    用绝对路径试一下
     <action name="user_table" class="entity.user_table">
            <result name="input">/login.jsp</result>
            <result name="success">/jspfile/login.jsp</result>
        </action> 
      

  16.   

    我解决了,谢谢各位!我改的是struts.xml里面的代码
    <action name="user_table" class="entity.user_table">
            <result name="input">/jspfile/login.jsp</result>
    </action>
      

  17.   

    有一个疑问,断点既然第二次也能进validate,第一次电击提交后,停留在了login页,第二次怎么404了,两次返回的页面应该是同一个吧?