我用的是struts1.1,代码没错,表单提交后,
变成空白页面
代码如下:
hello.jsp
<%@ page contentType="text/html; charset=GBK" %>
<%@page pageEncoding="UTF-8"%>
<%@taglib uri="/web-inf/struts-bean.tld" prefix="bean"%>
<%@taglib uri="/web-inf/struts-html.tld" prefix="html"%>
<%@taglib uri="/web-inf/struts-logic.tld" prefix="logic"%><html:html locale="true">
<head>
<title></title>
<html:base/>
</head>
<body bgcolor="white"><P>
<h2>
<bean:message key="hello.jsp.page.heading"/></h2><p>
<html:errors/><p><logic:present name="personbean" scope="reauest">
<h2>
<bean:message key="hello.jsp.page.hello"/>
<bean:write name="personbean" property="userName"/>
!<p>
</h2>
</logic:present><html:form action="HelloWorld.do" focus="userName"><html:text property="userName" size="16" maxlength="16"/><br>
<html:submit property ="submit" value="Submit"/>
<html:reset/>
</html:form><br>
</body>
</html:html>HelloAction.java
package hello;import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpServletResponse;import org.apache.struts.action.Action;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.util.MessageResources;public final class HelloAction extends Action{
    public ActionForward execute(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletRequest response) throws Exception
    {
        ActionMessages errors = new ActionMessages();
        String userName=(String)((HelloForm)form).getUserName();
        String badUserName = "Monster";
        if(userName.equalsIgnoreCase(badUserName))
        {
        errors.add("username",new ActionMessage("hello.dont.talk.to.monster",badUserName));
        //saveErrors(request,errors);
        //saveErrors(request,(ActionMessages)(errors)) ;
        return (new ActionForward(mapping.getInput()));
        }
        //PersonBean pb = new PersonBean();
        //pb.setUserName(userName);
        //pb.saveToPersistentStore();        //request.setAttribute(Constants.PERSON_KEY,pb);
        request.removeAttribute(mapping.getAttribute());
        return(mapping.findForward("SayHello"));
    }}
这个 saveError(有问题)actionForm.java
package hello;import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;public final class HelloForm extends ActionForm
{
  private String userName = null;
  public String getUserName (){
    return (this.userName);
  }
  public void setUserName(String userName){
    this.userName=userName;
  }
  public void reset(ActionMapping mapping,HttpServletRequest request){
    this.userName=null;
  }
  public ActionErrors validate(ActionMapping mapping,HttpServletRequest request){
    ActionErrors errors = new ActionErrors();
           if((userName==null)||(userName.length()<1))
               errors.add("username",new ActionMessage("hello.no.username.error"));
           return errors;
  }
}

解决方案 »

  1.   

    Constants.java
    package hello;public final class Constants {
     public static final String PERSON_KEY="personbean";
    }helloBean.java
    package hello;public class HelloBean {
      private String sample = "Start value";
      //Access sample property
      public String getSample() {
        return sample;
      }
      //Access sample property
      public void setSample(String newValue) {
        if (newValue!=null) {
          sample = newValue;
        }
      }
    }PersonBean.javapackage hello;public class PersonBean{
      private String userName=null;
      public String getUserName(){
        return this.userName;
      }
      public void setUserName(String userName)
      {
        this.userName=userName;
      }
      public void saveToPersistentStore()
      {  }
    }web.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
    <web-app>
      <servlet>
        <servlet-name>action</servlet-name>
        <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
        <init-param>
          <param-name>debug</param-name>
          <param-value>2</param-value>
        </init-param>
        <init-param>
          <param-name>config</param-name>
          <param-value>/WEB-INF/struts-config.xml</param-value>
        </init-param>
        <load-on-startup>2</load-on-startup>
      </servlet>
      <servlet-mapping>
        <servlet-name>action</servlet-name>
        <url-pattern>*.do</url-pattern>
      </servlet-mapping>
      <welcome-file-list>
        <welcome-file>hello.jsp</welcome-file>
      </welcome-file-list>
      <taglib>
        <taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri>
        <taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
      </taglib>
      <taglib>
        <taglib-uri>/WEB-INF/struts-html.tld</taglib-uri>
        <taglib-location>/WEB-INF/struts-html.tld</taglib-location>
      </taglib>
      <taglib>
        <taglib-uri>/WEB-INF/struts-logic.tld</taglib-uri>
        <taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
      </taglib>
      <taglib>
        <taglib-uri>/WEB-INF/struts-template.tld</taglib-uri>
        <taglib-location>/WEB-INF/struts-template.tld</taglib-location>
      </taglib>
    </web-app>struts.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
    <struts-config>
      <form-beans>
        <form-bean name="HelloForm" type="hello.HelloForm" />
      </form-beans>
      <action-mappings>
        <action type="hello.HelloAction" path="/HelloWorld"
    name="HelloForm" scope="request" validate="true" input="/hello.jsp">
    <forward name="SayHello" path="/hello.jsp"/>
    </action>
      </action-mappings>
    <message-resources parameter = "hello.application"/>
    </struts-config>
      

  2.   

    在tomcat下能运行,
    进入hello.jsp后。输入名字,提交后,什么都没有,
    在jbuilder下跟踪,好像没有执生action.
      

  3.   

    jsp中<html:form action="HelloWorld.do" focus="userName">
    改为
    <html:form action="/HelloWorld" focus="userName">;
    楼主再试试,有问题我们再讨论;
      

  4.   

    不行,还有那个saveError加上的话 ,不能通过
      

  5.   

    你的意思是不加saveError可以通过,但是加上通不过,是否??
      

  6.   

    加saveerrors不能编译,
    加与不加都是那人错误,什么都没有,
    没转向,我后面要做了个页面,把配转上先的的页面,还是一样
      

  7.   

    (1)jsp中<html:form action="HelloWorld.do" focus="userName">是正确的
    (2)在action中,ActionMessages errors = new ActionMessages();
    改为: ActionErrors errors = new ActionErrors();
    new ActionMessage("hello.dont.talk.to.monster",badUserName));中的ActionMessage也改为ActionError
    这样应该就可以了。