【问题标题】:org.apache.jasper.JasperException: javax.servlet.ServletException: javax.servlet.jsp.JspException: Cannot find bean under name airline_nameorg.apache.jasper.JasperException:javax.servlet.ServletException:javax.servlet.jsp.JspException:找不到名为airline_name的bean
【发布时间】:2013-07-30 11:25:13
【问题描述】:

lodable.jsp:

<html:form action="DemoS" method="POST" focus="" >
    Program Name : 
    <html:select property="airline_name" styleId  = "tempId" onchange="onAirlineChange()" >  
    <html:options collection="airline_name" property="value" labelProperty="key" />  
    </html:select>  <br/>
    PART NUMBER
    <input type="text" name="part_no"id="part_number">
    YEAR
    <select name="year" id="year" style="width:200px">
    <option value="13">2013</option>
    <option value="14">2014</option>
    <option value="15">2015</option>
    </select>
    <input type="submit" name="Lodable" value ="OK">
</html:form>
<html:errors/> 

DemoForm.java:

 public class DemoForm extends ValidatorForm{
    private String airline_name;
    private String part_no;
    private String year;
    public String getAirline_name() {
            return airline_name;
        }

    public void setAirline_name(String airline_name) {
            this.airline_name = airline_name;
        }
    public String getPre_part_no() {
            return pre_part_no;
        }

    public void setPre_part_no(String pre_part_no) {
            this.pre_part_no = pre_part_no;
        }
    public String getYear() {
            return year;
        }

    public void setYear(String year) {
            this.year = year;
        }

@Override
public ActionErrors validate(ActionMapping mapping, HttpServletRequest request)
{
ActionErrors errors=new ActionErrors(); 
     if(getPart_no()==null ||getPart_no().length()<1)
{
errors.add("part_no",new ActionMessage("errors.required","part_no"));
}
if(getYear()==null ||getYear().length()<1)
{
errors.add("Year",new ActionMessage("errors.required","Year"));
}
}
}

Struts-config.xml 的摘录:

<form-beans>
  <form-bean name="DemoForm" type="com.me.form.DemoForm" scope="session" />
<form-beans/>
<action-mappings>
 <action input="/pages/Lodable.jsp" parameter="method" name="DemoForm" path="/DemoS" scope="session" type="com.woi.action.DemoS" validate="true">
 <forward name="lodable" path="/pages/Lodable.jsp" />
 <forward name="save" path="/pages/success.jsp"></forward>
 <forward name="fail" path="/pages/fail.jsp"></forward>
 </action>
<action-mappings/>

收藏:

public Map<String,String> airline_name= new HashMap<String,String>();
airline_name.put("niraj.deshmukh","template1 ");
airline_name.put("user1","template1 ");
airline_name.put("user2","template2 ");
airline_name.put("user3","template3 ");
request.setAttribute("airline_name", airline_name);

例外:

org.apache.jasper.JasperException: javax.servlet.ServletException: javax.servlet.jsp.JspException: Cannot find bean under name airline_name
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:585)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:455)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1083)
    org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.java:295)
    org.apache.struts.action.RequestProcessor.internalModuleRelativeForward(RequestProcessor.java:1027)
    org.apache.struts.tiles.TilesRequestProcessor.internalModuleRelativeForward(TilesRequestProcessor.java:374)
    org.apache.struts.action.RequestProcessor.processValidate(RequestProcessor.java:995)
    org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:198)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
    org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728)

【问题讨论】:

    标签: java jsp configuration struts struts-1


    【解决方案1】:

    你没有正确指定动作的路径,应该是

    <html:form action="/DemoS"
    

    【讨论】:

    • 我正在尝试使用表单验证器,但它给了我上述异常。如果我删除
    • select 看起来不错,但选项不是,尝试为集合创建 List 属性并使用 &lt;html:optionsCollection property="airline_namesList"/&gt;
    • 无法为 airlline_namesList javax.servlet.jsp.JspException 提供相同的异常:找不到名称 airlline_namesList 下的 bean
    • 你没有创建bean属性,没有初始化,jsp包含你没有修复的错误。
    • 我想直到明天你才能回答我的问题。
    【解决方案2】:

    检查你是否为 formBean 类或 actionclass 创建了构造函数。如果你创建了构造函数,jspcompler 会给出如下错误:javax.servlet.jsp.JspException: Exception created bean of class ProductFB。

    【讨论】:

      【解决方案3】:

      之前我没有提到索引页面导航到的页面的正确路径,我使用了jsp:forward标签

      下面是我之前用过的标签

      <jsp:forward page="/faces/views/prime.xhtml"></jsp:forward>
      

      我把它改成了c:redirect

      <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
          pageEncoding="ISO-8859-1"%>
      <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
      
      <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
      <html>
      <head>
      <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
      <title>Index</title>
      </head>
      
      <body>
          <c:redirect url="/views/prime.xhtml"></c:redirect>
      </body>
      </html>
      

      问题解决了。

      【讨论】:

        猜你喜欢
        • 2019-05-24
        • 2011-12-23
        • 1970-01-01
        • 2013-05-03
        • 2017-01-08
        • 2015-04-27
        • 2015-08-12
        • 2020-09-13
        • 2020-09-10
        相关资源
        最近更新 更多