设置简单的struts 1.3项目,在ant范围内找不到bean

时间:2013-05-10 12:40:14

标签: java model-view-controller servlets javabeans struts1

我刚刚开始使用struts来维护struts 1.3应用程序,在设置完所有内容并部署我的hello world应用程序后,我收到以下错误:

javax.servlet.ServletException: javax.servlet.jsp.JspException: Cannot find bean: "helloWorldForm" in any scope
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:865)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:794)
org.apache.jsp.HelloWorld_jsp._jspService(HelloWorld_jsp.java:75)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:388)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:723)

我的操作类如下所示:

package com.mkyong.common.action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import com.mkyong.common.form.HelloWorldForm;

public class HelloWorldAction extends Action
{

public ActionForward execute(ActionMapping mapping,ActionForm form,
        HttpServletRequest request,HttpServletResponse response) throws Exception {

    HelloWorldForm helloWorldForm = (HelloWorldForm) form;
    helloWorldForm.setMessage("Hello World! Struts");

    return mapping.findForward("success");
}


}

我的表单类是这样的:

package com.mkyong.common.form;

import org.apache.struts.action.ActionForm;

public class HelloWorldForm extends ActionForm{

    String message;

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    }

这样的struts-config.xml:

<form-beans>
    <form-bean name="helloWorldForm" 
        type="com.mkyong.common.form.HelloWorldForm"/>
</form-beans>

<action-mappings>
    <action path="/helloWorld"
        type="com.mkyong.common.action.HelloWorldAction"
        name="helloWorldForm">
        <forward name="success" path="/HelloWorld.jsp"/>

    </action>
</action-mappings>

HelloWorld.jsp如下:

<html>
<head>
</head>
<body>
<h1><bean:write name="helloWorldForm" property="message" />
</h1>
</body>
</html>

老实说,我只是想在此基础上继续努力,但却无法让这一点发挥作用,并想知道是否有人可能会指出我正确的方向。

非常感谢任何帮助和建议。

3 个答案:

答案 0 :(得分:1)

是的,这就是不直接调用JSP页面的原因,只是尝试使用Action访问动作类。

对于此示例,尝试使用“/helloworld.do”

的Action进行访问

你可以使用你在

中定义的Bean名称在jsp页面上访问和打印该变量

这种问题将得到解决。

答案 1 :(得分:0)

是的,所以我确实值得一试;我试图在动作完成之前访问jsp页面因此我得到了错误。我应该按如下方式访问网址:

http://localhost:8080/StrutsExample/helloWorld.do

我正在尝试以下方法:

http://localhost:8080/StrutsExample/HelloWorld.jsp

whoops -_-

答案 2 :(得分:0)

我只是改变path =“/ HelloWorld”看起来像path =“/ HelloWorld.jsp”/&gt; “h”是uppcase

 <action path="/HelloWorld"
        type="com.mkyong.common.action.HelloWorldAction"
        name="helloWorldForm">
        <forward name="success" path="/HelloWorld.jsp"/>
    </action>