2016-08-24 16 views
0

何らかの理由で、ここで複数の例を見ても何らかの理由でこの問題を解決できないようです。Spring MVCは、 "要求属性として利用可能なBean名 'command'のBindingResultもプレーン・ターゲット・オブジェクト例外もありません。

コントローラがこのエラーを生成します。「要求属性としてBindingResultまたはBean名 'command'のプレーンターゲットオブジェクト例外がありません」。ここで

は私のコントローラである:ここでは

package net.codejava.Spring; 

import org.springframework.stereotype.Controller; 
import org.springframework.ui.Model; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestMethod; 
import org.springframework.web.servlet.ModelAndView; 

@Controller 
@SessionAttributes 
public class MainController { 

    @RequestMapping(value="/", method = RequestMethod.GET) 
    public ModelAndView visitHome() { 

     return new ModelAndView("param","command",new params()); 
     //return new ModelAndView("index"); 
    } 

    @RequestMapping(value="/HelloWorld/main", method = RequestMethod.GET) 
    public ModelAndView visitAdmin() { 
     JasperToPDF.generate(); 
     ModelAndView model = new ModelAndView("main"); 
     model.addObject("title", "Main Page"); 
     model.addObject("message", "You are on the main page."); 

     return model; 
    } 

    @RequestMapping(value="/HelloWorld/summary", method = RequestMethod.GET) 
    public ModelAndView visitSummary() { 

       return new ModelAndView("param","command",new params()); 
    } 

    @RequestMapping(value="/HelloWorld/Detailed", method = RequestMethod.GET) 
    public ModelAndView visitSummary() { 
     return new ModelAndView("Detailed"); 
    } 

    @RequestMapping(value="/HelloWorld/generated", method = RequestMethod.POST) 
    public String generateSummary(@ModelAttribute("command")params param, ModelMap model) 
    { 
       System.out.println(param.getSD()); 
       return ("generated"); 
    } 
} 

は私summary.jspです:ここでは

<%@ page language="java" session="true" contentType="text/html; charset=ISO-8859-1" 
    pageEncoding="ISO-8859-1"%> 
<%@include file='template.jsp'%> 
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%> 
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
    "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<meta charset="utf-8"> 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 
    <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 
    <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> 

<title>Summary</title> 
</head> 
<body> 
<form:form action="/HelloWorld/generated.jsp" method="post" commandName="command"> 
<form:select class="form-control" path="dept" commandName="command"> 
    <option selected="selected" value="0">Select Department</option> 
    <option value="1">All</option> 
    <option value="2">HR</option> 
    <option value="3">IT</option> 
    <option value="4">Security</option> 
</form:select> 
</br></br></br></br> 

<div class="form-group"> 
    <form:label for="usr" path="sd">Starting date(dd-mm-yyyy):</form:label> 
    <form:input type="text" path="sd" class="form-control" id="usr"/> 
</div> 

<div class="form-group"> 
    <form:label for="usr" path="sd">Ending date(dd-mm-yyyy):</form:label> 
    <form:input type="text" path="ed" class="form-control" id="usr"/> 
</div> 

<button type="submit" class="btn btn-primary">Generate Report</button> 
</form:form> 
</body> 
</html> 

は、web.xmlです:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee 
    http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" 
    id="WebApp_ID" version="3.1"> 
    <display-name>Spring Security Basic XML</display-name> 

    <servlet> 
     <servlet-name>SpringController</servlet-name> 
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
     <init-param> 
      <param-name>contextConfigLocation</param-name> 
      <param-value>/WEB-INF/spring-mvc.xml</param-value> 
     </init-param> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 

    <servlet-mapping> 
     <servlet-name>SpringController</servlet-name> 
     <url-pattern>/</url-pattern> 
    </servlet-mapping> 

    <listener> 
     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
    </listener> 

    <context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value> 
      /WEB-INF/spring-security.xml 
     </param-value> 
    </context-param> 

    <!-- Spring Security Filter --> 
    <filter> 
     <filter-name>springSecurityFilterChain</filter-name> 
     <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> 
    </filter> 

    <filter-mapping> 
     <filter-name>springSecurityFilterChain</filter-name> 
     <url-pattern>/*</url-pattern> 
    </filter-mapping> 
</web-app> 
+0

@ModelAttribute( "command")params param..what paramsは何ですか?それはクラスですか...そしてどのリクエストに対してエラーを出すのですか? –

+0

paramsはクラスです。このエラーを示しています。「summary.jspにアクセスしようとするたびに、BindingResultもBean名のためのプレーンターゲットオブジェクトもリクエスト属性として使用できません。 –

答えて

1

あなたsummary.jspcommandNameとしてcommand含まれていformにアクセスしてください。あなたにアクセスする前にあなたに名前がcommandのBeanオブジェクトを与えるリクエストを呼び出さなければなりません。あなたのコードで

HelloWorld/summarysummary.jspが、その後ModelAndViewにあなたがsummaryないcommandとしてview名前を言及する必要がアクセスするための要求である場合。

return new ModelAndView("summary","command",new Params()); 

Summary.jsp

<form:form action="/HelloWorld/generated.jsp" method="post" commandName="command"> 
<form:select class="form-control" path="dept"> 
    <option selected="selected" value="0">Select Department</option> 
    <option value="1">All</option> 
    <option value="2">HR</option> 
    <option value="3">IT</option> 
    <option value="4">Security</option> 
</form:select> 
</br></br></br></br> 

<div class="form-group"> 
    <form:label for="usr" path="sd">Starting date(dd-mm-yyyy):</form:label> 
    <form:input type="text" path="sd" class="form-control" id="usr"/> 
</div> 

<div class="form-group"> 
    <form:label for="usr" path="sd">Ending date(dd-mm-yyyy):</form:label> 
    <form:input type="text" path="ed" class="form-control" id="usr"/> 
</div> 

<button type="submit" class="btn btn-primary">Generate Report</button> 

コントローラ

@RequestMapping(value="/HelloWorld/Summary", method = RequestMethod.GET) 
    public ModelAndView visitSummary() { 
     return new ModelAndView("Summary","command",new Params()); 
    } 

Params.java

private String sd; 
private String dept; 
private String ed; 
//getter setter 

そしてURL:localhost:****/Helloworld/Summary

UPDATE

だから、あなただけ/サーブレットマッピング内にマッピングされているからだとURLに何*.jspを見ることはできません。 DispatcherServlet要求がそれでpath infoが含まれている場合、それはあなたのrequest mappingに達して文句を言わない、唯一/requestsのために絵になるだろうと言う

<url-pattern>/</url-pattern> 

パターンを/**または/*.jspに変更するか、アクセス方法を変更します。

+0

エラーはまだありますか? –

+0

エラーは何ですか?あなたはどのようにURLを与えているのですか? –

+0

これは例外です。 "java.lang.IllegalStateException:" http:// localhost:8080/HelloWorld/summary.jsp "にアクセスしようとすると、BindingResultもBean名 'command'のプレーン・ターゲット・オブジェクトもリクエスト属性として使用できません。 –

0

commandNameのあるフォームを含むページがある場合は、そのフォームの空の表現を指定する必要があります。したがって、summary.jspをロードするたびに、paramsオブジェクトをモデルに提供する必要があります。

paramsクラスは、ゲッターとセッターですべてのフォーム属性をプロパティとして持つ必要があります。

 @RequestMapping(value="/HelloWorld/summary", method = RequestMethod.GET) 
    public ModelAndView visitSummary() { 
     ModelAndView model = new ModelAndView(); 
     model.addObject("command", new params()); 
     model.setViewName("summary"); 
     return model; 
    } 

はまた、私はあなたが

<form:select class="form-control" path="dept" commandName="command"> 

を書かれていることに気づいた、選択するコマンド名を与えること有効であるかどうかは分かりませんが、確かにそれはフォームと同じ名前のすべきではありませんcommandName。

サイドノート:クラス名は大文字で始まり、名詞でなければなりません。

+0

@wapsa –

+0

コマンド名をから削除してみてください。質問にparamsクラスを投稿することもできます。 – GreyGoose

関連する問題

 関連する問題