求助,我使用struts,为什么不能进行输入验证呀?

03-01-04 xhair
只要允许输入验证,程序就会出错。不知是我那里写错了。。
程序我是用jbuilder8写的,里面对struts的支持挺不错。


出错代码如下:

type Exception report
message Internal Server Error
description The server encountered an internal error (Internal Server Error) that prevented it from fulfilling this request.
exception 
java.lang.IllegalArgumentException: Path reguser.asp does not start with a "/" character
 at org.apache.catalina.core.ApplicationContext.getRequestDispatcher(ApplicationContext.java:572)
 at org.apache.catalina.core.ApplicationContextFacade.getRequestDispatcher(ApplicationContextFacade.java:174)
 at org.apache.struts.action.ActionServlet.processValidate(ActionServlet.java:2142)
 at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1565)
 at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:492)

<p class="indent">


以下是我的源代码

reguser.jsp
----------------------------------------------------

<%@ page contentType="text/html; charset=GBK" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/struts-template.tld" prefix="template" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<html:html xhtml="true" locale="true">
<head>
<title>
reguser
</title>
</head>
<body>
<h1>JBuilder Generated Struts JSP for ActionForm studystructs.RegUserForm</h1>
<font color="red"><html:errors/></font>
<p>
<html:form action="/regUserAction" method="POST">
email     <html:text property="email" size="20" maxlength="30"/>
<br>
logname   <html:text property="logname" size="10" maxlength="10"/>
<br>
password  <html:text property="password" size="10" maxlength="20"/>
<br>
<html:submit property="submit" value="Submit"/><br>
<html:reset value ="Reset"/>
</html:form>
</body>
</html:html>
<p class="indent">



RegUserForm.java
-------------------------------------------------------

package studystructs;

import org.apache.struts.action.*;
import javax.servlet.http.*;

public class RegUserForm extends ActionForm {
  private String email;
  private String logname;
  private String password;
  private String welstr;

  public void setEmail(String email) {
    this.email = email;
  }
  public String getEmail() {
    return email;
  }
  public void setLogname(String logname) {
    this.logname = logname;
  }
  public String getLogname() {
    return logname;
  }
  public void setPassword(String password) {
    this.password = password;
  }
  public String getPassword() {
    return password;
  }

  public void initWelStr(){
    welstr = "Welcome!!" + logname +".<br> 欢迎您来到Struts的世界!";

  }
  public ActionErrors validate(ActionMapping actionMapping, HttpServletRequest httpServletRequest) {
    /**@todo: finish this method, this is just the skeleton.*/
         ActionErrors errors = new ActionErrors();
        if ((logname == null) || (logname.length() < 1))
            errors.add("username", new ActionError("error.username.required"));
        if ((password == null) || (password.length() < 5))
            errors.add("password", new ActionError("error.password.required"));

        return errors;
  }

  public void reset(ActionMapping actionMapping, HttpServletRequest httpServletRequest) {
    logname = null;
    password = null;
    email = null;
  }
}
<p class="indent">


RegUserAction.java
------------------------------------------------------

package studystructs;

import org.apache.struts.action.*;
import javax.servlet.http.*;

public class RegUserAction extends Action {
  public ActionForward perform(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) {
    /**@todo: complete the business logic here, this is just a skeleton.*/

    ((RegUserForm)actionForm).initWelStr();

    return (actionMapping.findForward("success"));
    //throw new java.lang.UnsupportedOperationException("Method perform() not yet implemented.");
  }
}
<p class="indent">



struts-config.xml
-----------------------------------------------------------------

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.0//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_0.dtd">
<struts-config>
  <form-beans>
    <form-bean name="regUserForm" type="studystructs.RegUserForm" />
  </form-beans>
  <action-mappings>
    <action name="regUserForm" type="studystructs.RegUserAction" validate="true" input="reguser.asp" scope="request" path="/regUserAction">
      <forward name="success" path="/messageSuccess.jsp" />
    </action>
  </action-mappings>
</struts-config>
<p class="indent">

hymmyh
2003-01-06 11:23
> <?xml version="1.0" encoding="UTF-8"?>
> <!DOCTYPE struts-config PUBLIC "-//Apache Software
> Foundation//DTD Struts Configuration 1.0//EN"
> "http://jakarta.apache.org/struts/dtds/struts-config_1
> 0.dtd">
> <struts-config>
> <form-beans>
> <form-bean name="regUserForm"
> rm" type="studystructs.RegUserForm" />
> </form-beans>
> <action-mappings>
> <action name="/regUserForm"
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> rm" type="studystructs.RegUserAction" validate="true"
> input="reguser.asp" scope="request"
> path="/regUserAction">
> <forward name="success"
> cess" path="/messageSuccess.jsp" />
> </action>
> </action-mappings>
> </struts-config>
> [/code]

你的xml配置错误

hymmyh
2003-01-06 11:25
action name="/regUserForm" type="studystructs.RegUserAction"
~ ~~~~~~~~~~~~
你的xml配置错误

xhair
2003-01-06 13:49
to hymmyh
那应该怎么样配置呀??我是用jbuilder8里面,直接填写的!!

为什么这样配置就验证不了呢??

hymmyh
2003-01-06 22:12
你那个少了/
你看我上面打了~~~的地方。

xhair
2003-01-07 08:34
我试了,不行,提示就找不到regUserForm了!!!

jxb8901
2003-01-07 17:10
<html:form action="/regUserAction" method="POST">
<p class="indent">

应该改为:

<html:form action="regUserAction">
<p class="indent">


xhair
2003-01-10 08:39
我试过了!!还是一样的!!我晚上再自己试试!!呵呵。。


非常感谢!!!!

Njord
2003-02-17 15:43
你在定义action的时候,input的路径不对。
为什么是asp呢?
这个且不说吧,你在前面加一个"/"试试。

猜你喜欢