我对servlet和FreeMarker(.ftl)模板完全不熟悉,因此这里涉及到一些猜测。问题是,我必须从web页面发送一个值,这个值必须在servlet中接收。
这是我的努力
FTL代码:
<form action="someAcction.spring" method="post">
<input type = "submit" value="Generate Values">
<input type = "text" placeholder = "Some long value">
<input type = submit name="someValue" value=${someValue}>
</form>
控制器代码:
@RequestMapping(value = "/someAction")
@ResponseBody
String generateSomeValues(@ModelAttribute("someValue") String someValueStr) {
Long someValue;
try{
someValue = Long.parseLong(someValueStr.trim());
} catch (NumberFormatException nfe) {
return "Invalid some value " + someValueStr;
//...... Some more code
}
请告诉我,这里有什么问题。
最佳答案
如果使用AJAX调用此方法,则应该使用@ResponseBody。以及@ModelAttribute,用于用jstl标记绑定对象的情况。如果您使用url appender传递值,那么它可以在控制器中使用@RequestParam或@PathVariable进行访问。
试试这个:
<form action="someAcction.spring" method="post">
<input type = "submit" value="Generate Values" name="value1"/>
<input type = "text" placeholder = "Some long value" name="value2"/>
<input type = "submit" name="someValue" value=${someValue}/>
</form>
@RequestMapping(value = "/someAction")
String generateSomeValues(HttpServletRequest request,HttpServletResponse response){
Long someValue;
try{
someValue = Long.parseLong(request.getParamter("value1"));
System.out.println(someValue);
} catch (NumberFormatException nfe) {
return "Invalid some value " + someValueStr;
//...... Some more code
}