2014-04-07 23 views
0

我是Spring的新手,在使用浏览器输入campaigns.jsp时,出现此异常。Spring,IllegalStateException打开页面时出现

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

我有这样的控制器:

@Controller 
@RequestMapping(value = "/admin") 
public class AdminIndexController { 
    @RequestMapping(value = "/secure/campaigns.jsp", method = RequestMethod.GET) 
    public String campaigns() { 
     return "campaigns"; 
    } 

    @RequestMapping(value = "/secure/create", method = RequestMethod.POST) 
    public String addContact(@ModelAttribute("campaign") 
          Campaign campaign) { 

     return "campaigns"; 
    } 
} 

Campaings.jsp(如果我删除这部分,它显示的页面正确):

<form:form method="post" action="create" commandName="campaign"> 
    <table> 
    <tr> 
     <td><form:label path="question">Question</form:label></td> 
     <td><form:input path="question" /> 
     </td>  
    </tr>  

    <tr> 
     <td colspan="2"> 
      <input type="submit" value="Add Campaign"/> 
     </td> 
    </tr> 
</table> 

</form:form> 

我想有一个问题映射action="create",我不确定它指向哪里。我认为它指向与.jsp相同的地方。这是地址我使用http://localhost:8080/server/rest/admin/secure/campaigns.jsp

回答

2

<form:form method="post" action="create" commandName="campaign"> 

期望一个模型属性(或命令对象),在现实的一种HttpServletRequest属性,名称为campaign作为用于形式要使用的模板领域。

您尚未添加具有该名称的请求属性。您需要在呈现视图之前执行此操作。例如

@RequestMapping(value = "/secure/campaigns.jsp", method = RequestMethod.GET) 
public String campaigns(Model model) { 
    model.addAttribute("campaign", new Campaign()); 
    return "campaigns"; 
} 

该对象不需要设置任何字段,因为它仅用作模板。

+0

非常感谢你!我可以在9分钟内接受:)。我认为Spring正在检查表单,如果它具有正确准备的“操作”路径! – libik

+0

@libik不客气。还有一件事你应该修复的是'action'属性。不要相对。在'$ {pageContext.request.contextPath}'的前面加上'(在这个例子中,完整的值是'$ {pageContext.request.contextPath}/secure/create'),这样很明显它会发生什么。如果您最终将表单复制粘贴到另一个以不同路径呈现的JSP中,您不必问自己:“为什么它会在其他地方?”。 –

+0

谢谢。如果我理解正确,在这个环境和完整地址中:'http:// localhost:8080/server/rest/admin/secure/campaigns.jsp','$ {pageContext.request.contextPath}'是http://localhost:8080/server/rest/admin /'? – libik

相关问题