我刚刚开始使用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>
老实说,我只是想在此基础上继续努力,但却无法让这一点发挥作用,并想知道是否有人可能会指出我正确的方向。
非常感谢任何帮助和建议。
答案 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>