如果在jsp页面,我们在一个表单中(只有表单中的input标签的值才可以提交到后台)有好多个属性一样的标签,我们知道如果想在Servlet中获取所有属性名字一样的属性值,可以用request.getParameterValues(“”)得到一组数组。示例代码如下:
jsp:
<body>
<form action="test.do" method="post">
<input type="checkbox" name="array" value="123">
<input type="checkbox" name="array" value="4">
<input type="checkbox" name="array" value="45">
<input type="checkbox" name="array" value="16">
<input type="submit" value="提交">
</form>
</body>
Servlet:
String[] arrays=request.getParameterValues("array");
现在我们来讲一下如果我想利用Struts1.x中的actionForm表单来实现这个功能,怎么实现?(我们知道actionForm表单会有很多好处,可以自动帮我们封装,还可以自动转换数据类型等)。其实为了达到上面的效果,可以在ActionForm中通过定义一个数组来接受。实现上面的功能的代码,如下:
//jsp:
<body>
<form action="test.do" method="post">
<input type="checkbox" name="array" value="123">
<input type="checkbox" name="array" value="4">
<input type="checkbox" name="array" value="45">
<input type="checkbox" name="array" value="16">
<input type="submit" value="提交">
</form>
</body>
//actionForm:
public class ArrayActionForm extends ActionForm{
int id;
String[] array;
}
getter和setter略
//action的接受:
ArrayActionForm aaf = (ArrayActionForm)form;
String[] array = aaf.getArray();
很灵活,例如我们如果想获取的array为整数类型,如果用第一种要一个一个的转换,而在actionform中只需把array定义为整数数组就好。