HTTP Status 500 - Не удается найти bean-компонент: "dynaStudentListForm" в любой области - PullRequest
0 голосов
/ 18 марта 2020

Я пытаюсь создать простое динамическое c веб-приложение с использованием eclipse. Я получаю следующее сообщение об ошибке

Статус HTTP 500 - Внутренняя ошибка сервера - javax.servlet.ServletException: javax.servlet. jsp .JspException: не удается найти bean-компонент: "dynaStudentListForm" в любой области действия

Пожалуйста, помогите.

HTTP Status 500 – Internal Server Error


Type Exception Report

Message An exception occurred processing [/pages/student/list_student.jsp] at line [16]

Description The server encountered an unexpected condition that prevented it from fulfilling the request.

Exception
org.apache.jasper.JasperException: An exception occurred processing [/pages/student/list_student.jsp] at line [16]

13: <table border="1">
14: <tr><td>Student Name</td><td>Gender</td></tr>
15: 
16: <logic:iterate id="student" name="dynaStudentListForm" property="studentList">
17:     <tr>    
18:         <td><bean:write name="student" property="name"/></td>
19:         <td><bean:write name="student" property="gender"/></td>


Stacktrace:
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:626)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:500)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)


Root Cause
javax.servlet.ServletException: javax.servlet.jsp.JspException: Cannot find bean: "dynaStudentListForm" in any scope
    org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:666)
    org.apache.jsp.pages.student.list_005fstudent_jsp._jspService(list_005fstudent_jsp.java:221)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:477)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)


Root Cause
javax.servlet.jsp.JspException: Cannot find bean: "dynaStudentListForm" in any scope
    org.apache.struts.taglib.TagUtils.lookup(TagUtils.java:935)
    org.apache.struts.taglib.logic.IterateTag.doStartTag(IterateTag.java:232)
    org.apache.jsp.pages.student.list_005fstudent_jsp._jspService(list_005fstudent_jsp.java:161)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:477)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)


Note The full stack trace of the root cause is available in the server logs.


Apache Tomcat/9.0.31

Код для обзора

pom. xml

<project xmlns="http://maven.apache.org/POM/4.0.0" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
  http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.jay.common</groupId>
  <artifactId>StrutsSpringExample</artifactId>
  <packaging>war</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>StrutsExample Maven Webapp</name>
  <url>http://maven.apache.org</url>

  <repositories>
    <repository>
        <id>Java.Net</id>
        <url>http://download.java.net/maven/2/</url>
    </repository>

    <repository>
        <id>JBoss repository</id>
        <url>http://repository.jboss.com/maven2/</url>
    </repository>

  </repositories>

  <dependencies>

        <!-- Spring framework --> 
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring</artifactId>
      <version>2.5.6</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>2.5.6</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-struts</artifactId>
      <version>2.0.8</version>
    </dependency>

        <!-- J2EE library -->
    <dependency>
      <groupId>javax</groupId>
      <artifactId>javaee-api</artifactId>
      <version>7.0</version>
    </dependency>

        <!-- Unit Test -->
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>3.8.1</version>
          <scope>test</scope>
        </dependency>

        <!-- Struts 1.3 framework -->
        <dependency>
          <groupId>org.apache.struts</groupId>
      <artifactId>struts-core</artifactId>
          <version>1.3.10</version>
        </dependency>

        <dependency>
          <groupId>org.apache.struts</groupId>
      <artifactId>struts-taglib</artifactId>
          <version>1.3.10</version>
        </dependency>

        <dependency>
          <groupId>org.apache.struts</groupId>
      <artifactId>struts-extras</artifactId>
          <version>1.3.10</version>
        </dependency>

        <!-- MySQL database driver -->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.19</version>
    </dependency>

    <!-- Hibernate core -->
    <dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate</artifactId>
      <version>3.2.7.ga</version>
    </dependency>

    <!-- Hibernate core library dependecy start -->
    <dependency>
      <groupId>dom4j</groupId>
      <artifactId>dom4j</artifactId>
      <version>1.6.1</version>
    </dependency>

    <dependency>
      <groupId>commons-logging</groupId>
      <artifactId>commons-logging</artifactId>
      <version>1.2</version>
    </dependency>

    <dependency>
      <groupId>commons-collections</groupId>
      <artifactId>commons-collections</artifactId>
      <version>3.2.1</version>
    </dependency>

    <dependency>
      <groupId>commons-fileupload</groupId>
      <artifactId>commons-fileupload</artifactId>
      <version>1.4</version>
    </dependency>

    <dependency>
      <groupId>commons-codec</groupId>
      <artifactId>commons-codec</artifactId>
      <version>1.10</version>
    </dependency>

    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>2.6</version>
    </dependency>

    <dependency>
      <groupId>cglib</groupId>
      <artifactId>cglib</artifactId>
      <version>2.2</version>
    </dependency>
    <!-- Hibernate core library dependecy end -->

    <!-- Hibernate query library dependecy start -->
    <dependency>
      <groupId>antlr</groupId>
      <artifactId>antlr</artifactId>
      <version>2.7.7</version>
    </dependency>

    <dependency>
      <groupId>asm-attrs</groupId>
      <artifactId>asm-attrs</artifactId>
      <version>1.5.3</version>
    </dependency>
    <!-- Hibernate query library dependecy end -->

  </dependencies>
  <build>
    <finalName>StrutsExample</finalName>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
        </resource>
        <resource>
            <directory>src/main/java</directory>
        </resource>
        <resource>
            <directory>src/main/webapp</directory>
        </resource>
    </resources>
  </build>
</project>

struts-config.xaml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC 
"-//Apache Software Foundation//DTD Struts Configuration 1.3//EN" 
"http://jakarta.apache.org/struts/dtds/struts-config_1_3.dtd">

<struts-config>

    <form-beans>
        <form-bean name="studentForm"   
              type="com.jay.student.form.StudentForm" />

        <form-bean name="dynaStudentListForm"   
              type="org.apache.struts.action.DynaActionForm">
              <form-property name="studentList" type="java.util.List"/>
        </form-bean>

    </form-beans>

    <action-mappings>

        <action
            path="/AddStudentPage"
            type="org.apache.struts.actions.ForwardAction"
            parameter="/pages/student/add_student.jsp"/>


        <action
            path="/AddStudent"
            type="com.jay.student.action.AddStudentAction"
            name="studentForm"
            validate="true"
            input="/pages/student/add_student.jsp"> 

            <forward name="success" redirect="true" path="/ListStudent.do"/>
        </action>

        <action
            path="/ListStudent"
            type="com.jay.student.action.ListStudentAction"
            name="dynaStudentListForm"> 

            <forward name="success" path="/pages/student/list_student.jsp"/>
        </action>


    </action-mappings>

    <message-resources
        parameter="com.jay.student.properties.Student" />

    <!-- Spring Struts plugin -->
    <plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
        <set-property property="contextConfigLocation"
        value="/WEB-INF/classes/SpringBeans.xml" />
    </plug-in>

</struts-config>

web. xml

<!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>Struts Hibernate Examples</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>
    <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>/pages/student/list_student.jsp</welcome-file>
  </welcome-file-list>

</web-app>

list_student. jsp

<%@taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<%@taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
<%@taglib uri="http://struts.apache.org/tags-logic" prefix="logic"%>

<html>
<head>
</head>
<body>
<h1>Struts + Spring + Hibernate example</h1>

<h2>List All Students</h2>

<table border="1">
<tr><td>Student Name</td><td>Gender</td></tr>

<logic:iterate id="student" name="dynaStudentListForm" property="studentList">
    <tr>    
        <td><bean:write name="student" property="name"/></td>
        <td><bean:write name="student" property="gender"/></td>
    </tr>
</logic:iterate> 


</table>

<br/>
<br/>
<html:link action="/AddStudentPage.do">Add Student</html:link>

</body>
</html>

ListStudentAction. java

package com.jay.student.action;

import java.util.List;

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

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.DynaActionForm;
import org.springframework.web.struts.ActionSupport;

import com.jay.student.bo.StudentBo;
import com.jay.student.model.Student;

public class ListStudentAction extends ActionSupport{

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

        StudentBo studentBo = (StudentBo) getWebApplicationContext().getBean("studentBo");

        DynaActionForm dynaStudentListForm = (DynaActionForm)form;

        List<Student> list = studentBo.findAllStudent();

        dynaStudentListForm.set("studentList", list);

        return mapping.findForward("success");

    }

}
...