在@RequestParam中绑定列表
我以这种方式从一个表单发送一些参数:
myparam[0] : 'myValue1' myparam[1] : 'myValue2' myparam[2] : 'myValue3' otherParam : 'otherValue' anotherParam : 'anotherValue' ...
我知道我可以通过添加一个参数来获得控制器方法中的所有参数
public String controllerMethod(@RequestParam Map<String, String> params){ .... }
我想绑定参数myParam [](而不是其他的)到一个列表或数组(任何保持索引顺序),所以我尝试了一个语法,如:
public String controllerMethod(@RequestParam(value="myParam") List<String> myParams){ .... }
和
public String controllerMethod(@RequestParam(value="myParam") String[] myParams){ .... }
但没有一个绑定myParams。 即使我向地图添加一个值,也不能绑定参数:
public String controllerMethod(@RequestParam(value="myParam") Map<String, String> params){ .... }
有没有任何语法来绑定一些参数列表或数组,而不必创build一个对象作为@ModelAttribute与列表属性在它?
谢谢
@RequestParam
中的数组用于绑定几个同名的参数:
myparam=myValue1&myparam=myValue2&myparam=myValue3
如果你需要绑定@ModelAttribute
-style索引参数,我想你无论如何都需要@ModelAttribute
。
或者你可以这样做:
public String controllerMethod(@RequestParam(value="myParam[]") String[] myParams){ .... }
这适用于像这样的forms:
<input type="checkbox" name="myParam[]" value="myVal1" /> <input type="checkbox" name="myParam[]" value="myVal2" />
这是最简单的解决scheme:)
有一种方法可以完成这个任务(以一种黑客的方式),为List创build一个包装类。 喜欢这个:
class ListWrapper{ List<String> myList; // getters and setters }
那么你的控制器方法签名将如下所示:
public String controllerMethod(ListWrapper wrapper){ .... }
如果您在请求中传递的集合名称与包装类的集合字段名称相匹配,则无需使用@RequestParam或@ModelAttribute注释,在我的示例中,您的请求参数应如下所示:
myList[0] : 'myValue1' myList[1] : 'myValue2' myList[2] : 'myValue3' otherParam : 'otherValue' anotherParam : 'anotherValue'
只要补充Donal Fellows说的,你可以使用带有@RequestParam的List
public String controllerMethod(@RequestParam(value="myParam") List<ObjectToParse> myParam){ .... }
希望能帮助到你!
如果method = RequestMethod.GET
那么订阅什么罗勒说在评论本身的问题本身,那么你可以使用@RequestParam List groupVal。
然后用params列表调用服务就像下面这样简单:
API_URL?groupVal=kkk,ccc,mmm
用下面的checkbox切换隐藏的字段值…
HTML:
<input type='hidden' value='Unchecked' id="deleteAll" name='anyName'> <input type="checkbox" onclick="toggle(this)"/> Delete All
脚本:
function toggle(obj) {`var $input = $(obj); if ($input.prop('checked')) { $('#deleteAll').attr( 'value','Checked'); } else { $('#deleteAll').attr( 'value','Unchecked'); } }
- Spring XML文件configuration层次结构的帮助/解释
- 在Springconfiguration文件中使用bean id和name之间的区别
- Spring注解@Repository和@Service
- 春季启动:是否有可能使用外部application.properties文件在任何目录与胖胖的jar?
- 在父上下文中声明Spring Bean与子上下文
- Spring RedirectAttributes:addAttribute vs addFlashAttribute
- Spring Boot和多个外部configuration文件
- Spring:以Map或Properties对象的forms访问所有Environment属性
- 使用Angular2将file upload到Rest API