【问题标题】:struts error- org.apache.jasper.JasperException: javax.servlet.ServletException: javax.servlet.jsp.JspException: Cannot find beanstruts 错误 - org.apache.jasper.JasperException: javax.servlet.ServletException: javax.servlet.jsp.JspException: 找不到 bean
【发布时间】:2014-04-22 21:14:41
【问题描述】:

我正在尝试一个简单的 struts 应用程序,它将一个字符串值从 java 类文件传递到 jsp。

这里是struts应用的对应文件-

web.xml

<?xml version="1.0" encoding="ISO-8859-1"?>

<!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>

    <display-name>Hello World Struts Application</display-name>

    <servlet>
        <servlet-name>action</servlet-name>
        <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
        <init-param>
            <param-name>config</param-name>
            <param-value>/WEB-INF/struts-config.xml</param-value>
        </init-param>
        <init-param>
            <param-name>debug</param-name>
            <param-value>3</param-value>
        </init-param>
        <init-param>
             <param-name>detail</param-name>
             <param-value>3</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>action</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>


    <welcome-file-list>
        <welcome-file>view.jsp</welcome-file>
    </welcome-file-list>

</web-app>

struts-config.xml

<?xml version="1.0" encoding="ISO-8859-1" ?>

<!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="myForm" type="com.myForm" />
    </form-beans>

    <action-mappings>
        <action path="/view" scope="request" name="myForm" type="com.myAction" validate="false">
                <forward name="success" path="/first" />
        </action>
        <action path="/view"
                forward="/view.jsp"/>
        <action path="/first"
                forward="/first.jsp" />
    </action-mappings>
</struts-config>

view.jsp

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </head>

    <body>
        <form action="first.do">
            Enter name :
            <input type="text" name="name"/>
            <input type="submit" value="Enter"/>
        </form>

    </body>
</html>

first.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </head>

    <body>
        Welcome!!!!!!!!

        <bean:write name="myForm" property="st"/>
    </body>
</html>

myForm.java

package com;

import javax.servlet.http.HttpServletRequest;

public class myForm extends org.apache.struts.action.ActionForm {

    private String st;

    public String getSt()
    {
        return st;
    }

    public void setSt(String st)
    {
        this.st=st;
    }

    public myForm(String st)
    {
        this.st=st;
    }
}

myAction.java

package com;

import java.io.IOException;
import javax.servlet.ServletException;
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;


public class myAction extends org.apache.struts.action.Action {
    public ActionForward execute(ActionMapping mapping, ActionForm form,
    HttpServletRequest request, HttpServletResponse response)
    throws IOException, ServletException {

        myForm form1=(myForm) form;

        String s="Karthikeyan";

        System.out.println("Hello "+s);

        form1.setSt(s);

        //RequestDispatcher reqDispatcher = getRequestDispatcher("view.jsp");
        //reqDispatcher.forward(request,response);




        return (mapping.findForward("success"));
    }
}

即使我已经为类文件设置了类路径,但在编译 myAction.java 时出现以下错误-

myAction.java:18: cannot find symbol
symbol  : class myForm
location: class com.myAction
                myForm form1=(myForm) form;
                ^
myAction.java:18: cannot find symbol
symbol  : class myForm
location: class com.myAction
                myForm form1=(myForm) form;
                              ^ 

当我尝试在网络浏览器上执行应用程序时,我收到以下错误-

org.apache.jasper.JasperException: javax.servlet.ServletException: javax.servlet.jsp.JspException: Cannot find bean: "myForm" in any scope

我在这个问题上停留了很长一段时间,没有任何解决方案。请帮帮我。

【问题讨论】:

  • 那里没有发布解决方案。
  • 检查 xml 文件是否被正确验证。从本地机器下载那些 dtd 文件并使用 em
  • 您如何构建和执行您的应用程序?看起来 myForm 类未包含在您的 war/ear 文件中。检查文件夹结构。
  • @Karthik 我正在编译 cmd 中的 java 文件并在浏览器中执行应用程序。如何在 war/ear 文件中包含 myForm 类?

标签: java jsp servlets struts struts-1


【解决方案1】:

您错过了 myform 类的 getter 和 setter 方法。请在 myAction 类中为 myform 类添加 getter 和 setter 方法,并在 web.xml 中添加过滤器。

【讨论】:

  • struts2 中没有使用过滤器,我在应用程序中使用 struts1。我还在 myForm 类中包含了 getter 和 setter 方法,并在 myAction 类中包含了 setter 方法。
【解决方案2】:

创建一个新项目,设置类路径,执行它,它将起作用:)。它对我有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多