Jsp springmvc中的表单继承
我在SpringMVC应用程序中面临一种情况,我有一个所有页面都通用的表单。因此,我在一个单独的jsp页面中采用了该表单,并将该页面包含在其他jsp页面中。形式很简单:Jsp springmvc中的表单继承,jsp,spring-mvc,Jsp,Spring Mvc,我在SpringMVC应用程序中面临一种情况,我有一个所有页面都通用的表单。因此,我在一个单独的jsp页面中采用了该表单,并将该页面包含在其他jsp页面中。形式很简单: <form:form method="POST" commandName="coachingDomain" action="searchForm"> <form:input path="coachingName" placeholder="Search for coaching" />
<form:form method="POST" commandName="coachingDomain" action="searchForm">
<form:input path="coachingName" placeholder="Search for coaching" />
<button type="submit" value="Search">Search</button>
</form:form>
但绑定错误仍然出现。在我看来,服务器试图首先找到A1页的控制器。所以,我创建了A1控制器(作为抽象),并使A2扩展了A1控制器。然后,我将相同的代码放在A1中。但仍然存在同样的错误
我的A1和A2控制器是:
public abstract class A1 {
public void showPage1(ModelMap modelMap, HttpServletRequest request,
HttpServletResponse response) {
System.out.println("A1 called");
modelMap.addAttribute("coachingDomain",
new CoachingDomain());
}
}
@Controller
@RequestMapping(value = "/A2.html")
public class A2 extends A1 {
@RequestMapping(method = RequestMethod.GET)
public String showPage(ModelMap modelMap, HttpServletRequest request,
HttpServletResponse response) {
System.out.println("A2 called");
showPage1(modelMap, request, response);
modelMap.addAttribute("searchCoachingDomain",
new SearchCoachingDomain());
return "A2";
}
}
我的jsp页面是:
A1.jsp:
<body>
<form:form method="POST" commandName="coachingDomain" action="searchForm">
<form:input path="coachingName" placeholder="Search for coaching" />
<button type="submit" value="Search">Search</button>
</form:form>
</body>
搜寻
A2.jsp:
<%@include file="/WEB-INF/views/root.jsp"%>
错误是:
Neither BindingResult nor plain target object for bean name 'coachingDomain' available as request attribute
at org.springframework.web.servlet.support.BindStatus.<init>(BindStatus.java:141)
at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getBindStatus(AbstractDataBoundFormElementTag.java:174)
bean名称“coachingDomain”的BindingResult和普通目标对象都不能作为请求属性使用
位于org.springframework.web.servlet.support.BindStatus。(BindStatus.java:141)
位于org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getBindStatus(AbstractDataBoundFormElementTag.java:174)
在internet上有一些继承示例,但我不知道如何使表单对所有jsp页面通用。我想到的一种方法可能是使用Javascript,在这里我将submit按钮与JS函数绑定,并调用所需的URL。但我希望通过使用springmvc@RequestMapping(method=RequestMethod.POST)技术也能实现同样的效果。请建议我到这里来…你能发布更多的控制器信息和你遇到的错误吗?我已经按照你的要求添加了代码和错误。。。
Neither BindingResult nor plain target object for bean name 'coachingDomain' available as request attribute
at org.springframework.web.servlet.support.BindStatus.<init>(BindStatus.java:141)
at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getBindStatus(AbstractDataBoundFormElementTag.java:174)