2011-11-26 64 views
2

我是初學者在Spring MVC,我不知道爲什麼我一直得到相同的錯誤:java.lang.IllegalStateException:既沒有BindingResult,也沒有bean名稱beanName作爲請求屬性

java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'articleName' available as request attribute

任何人都可以幫忙嗎?

預先感謝

JSP代碼:

<html> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
    <title>Add article</title> 
</head> 
<body> 
    <h1>Add article</h1> 

    <c:url var="viewArticlesUrl" value="/articles.htm"/> 
    <a href="${viewArticlesUrl}">Show all Articles</a> 
    <br/><br/> 
    <c:url var="saveArticleUrl" value="/articles/save.htm"/> 
<from:form modelAttribute="article" method="POST" action="${saveArticleUrl}"> 
    <form:label path="articleName">Article name:</form:label> 
    <form:input path="articleName"/>  
    <br /> 
    <form:label path="articleDesc">Article Desc:</form:label> 
    <form:textarea path="articleDesc" /> 
    <br /> 

    <input type="submit" value="Save Article" /> 
</from:form> 
</body> 

控制器:

@Controller 
    @RequestMapping("/articles") 
    public class ArticleController { 

@Autowired 
private ArticleService articleService; 

@RequestMapping(value="/save", method=RequestMethod.POST) 
public ModelAndView saveArticle(@ModelAttribute("article")Article article, BindingResult result){ 
    articleService.addArticle(article); 
    return new ModelAndView("redirect:/articles.html"); 
} 

@RequestMapping(method=RequestMethod.GET) 
public ModelAndView listArticles(){ 
    Map<String, Object> model=new HashMap<String, Object>(); 
    model.put("articles", articleService.listArticles()); 

    return new ModelAndView("articlesList", model); 
} 

@RequestMapping(value="/add", method=RequestMethod.GET) 
public ModelAndView addArticle(@ModelAttribute("article") Article article, BindingResult result){ 
    return new ModelAndView("addArticle"); 
} 
} 

分派器:

 <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> 
    <property name="mappings"> 
     <props> 
      <prop key="index.htm">indexController</prop> 
      <prop key="articles.htm">articleController</prop> 
      <prop key="articles/add.htm">articleController</prop> 
     </props> 
    </property> 
</bean> 

<bean id="viewResolver" 
     class="org.springframework.web.servlet.view.InternalResourceViewResolver" 
     p:prefix="/WEB-INF/jsp/" 
     p:suffix=".jsp" /> 

<!-- 
The index controller. 
--> 

<bean name="indexController" 
     class="org.springframework.web.servlet.mvc.ParameterizableViewController" 
     p:viewName="index" /> 

<!-- article controller --> 
<bean name="articleController" class="controller.ArticleController"/> 

  @Entity 
    @Table(name="article") 
    public class Article { 
@Id 
@GeneratedValue 
@Column(name="article_id") 
private Long articleId; 

@Column(name="article_name", nullable=false, length=20) 
private String articleName; 

@Column(name="article_desc", nullable=false) 
private String articleDesc; 

@Column(name="date_added") 
@Temporal(javax.persistence.TemporalType.DATE) 
private Date addedDate; 

    public Article() {  
    } 

    public Long getArticleId() { 
    return articleId; 
    } 

    public void setArticleId(Long articleId) { 
    this.articleId = articleId; 
    } 

    public String getArticleName() { 
    return articleName; 
    } 

    public void setArticleName(String articleName) { 
     this.articleName = articleName; 
    } 

    public String getArticleDesc() { 
    return articleDesc; 
    } 

    public void setArticleDesc(String articleDesc) { 
    this.articleDesc = articleDesc; 
    } 

    public Date getAddedDate() { 
    return addedDate; 
    } 

    public void setAddedDate(Date addedDate) { 
    this.addedDate = addedDate; 
    } 

}

,我發現了問題:當我做一個GET請求

+0

對於您的對象 「條」(在這個表單的ModelAttribute定義)它是否具有您在中定義的「articleName」屬性? – Stealth

+0

如果您在此處發佈您的Article對象代碼,並且您可以澄清您在GET或POST期間是否收到錯誤,那麼將更容易爲您提供幫助。 – Stealth

+0

THX的快速響應 – Carbosound1

回答

2

事實證明我是個白癡

是:

<form:label path="articleName">Article name:</form:label> 
    <form:input path="articleName"/> 

it應該是:

<form:label path="article.articleName">Article name:</form:label> 
    <form:input path="article.articleName"/> 

同爲articleDesc

說實話,我找到了解決辦法感謝:隱形

1
protected ModelAndView onSubmit(HttpServletRequest request, 
      HttpServletResponse response, Object command, BindException errors) throws Exception { 

     System.out.println("On Submit"); 

     ModelAndView mv = super.onSubmit(command, errors); 
     mv.addObject("result","success"); 
     return mv; 
    } 
+3

你可以添加一些上下文到你的答案? –

相關問題