这似乎是一个普遍的问题。我已经完成了 SO 中给出的所有答案,但无法使其发挥作用。
我正在尝试将 Spring MVC+Freemarker 集成到现有的 Web 应用程序中。它适用于GET
请求,并且 Freemarker 模板可以毫无问题地读取 Controller 提供的 java 对象。
但表单提交无法命中控制器方法。最后我让 log4j 工作了。这是我得到的错误:
错误
HandlerMethod details:
Controller [application.entry.controller.UserController]
Method [public void application.entry.controller.UserController.handleSave(java.lang.String)]
org.springframework.web.bind.MissingServletRequestParameterException:
Required String parameter 'action' is not present
自由标记:
<form method="POST" action="save.html">
------------
<input type="submit" class="btnnew" name="saveWithoutValidation" value="Save Without Validation"></input>
<input type="submit" class="btnnew" name="submit" value="Submit"></input>
</form>
上下文根是PORTAL。
spring-servlet.xml
<bean id="viewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
<property name="cache" value="true"/>
<property name="prefix" value=""/>
<property name="suffix" value=".ftl"/>
web.xml
<servlet>
<servlet-name>spring</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
控制器
@RequestMapping(value="/save", method=RequestMethod.POST)
public void handleSave(@RequestParam String action){
if( action.equals("submit") ){
System.out.println("Damn! You clicked submit");
}
else if( action.equals("saveWithoutValidation") ){
System.out.println("Sweet! You want no string attached.");
}
}
对于日志,我尝试将其添加log4j.logger.org.springframework.web=DEBUG
到现有的 log4j.properties 中,但没有成功。