我有一个逻辑问题。允许用户向表单添加任意数量的字段。提交表单后,我需要收集所有字段的值并将它们存储在ArrayList中。问题是我不知道表单中是否只有1个字段,或500。
我区分单个表单字段的方法是在其名称中添加索引号,因此在表单中有名称=“field1”,name =“field2”等字段。
这是我到目前为止的代码:
for (int i = 1; i < number of fields; i++) {
while (request.getParameter("field" + Integer.toString(i)) != null) {
Add to ArrayList
}
}
如何找到字段数?或者也许还有另一个解决这个问题的方法?
答案 0 :(得分:4)
使用while循环:
int i=0;
while (request.getParameter("field" + Integer.toString(i)) != null) {
// Add to ArrayList
i++; // very important, don't forget this one
}
// i is the count of fields at this point
答案 1 :(得分:0)
这应该没问题:
i=1;
while (request.getParameter("field" + Integer.toString(i)) != null) {
//Add to ArrayList
i++;
}
答案 2 :(得分:0)
java中有3种类型的循环。
听起来你需要找出一种方法来检查一个字段是否存在并构建一段时间或者做什么同时取决于它们是否能够输入0
答案 3 :(得分:0)
您可以使用request.getParameterNames()并遍历元素
for(Enumeration e = request.getParameterNames();
e.hasMoreElements(); ){
String parameterName = (String)e.nextElement();
//Your code logic with the parameter.
}
这是一种更有效的逻辑,因为您不需要先计算参数数量,然后再添加到ArrayList
。你不需要和null
和NPE一起玩
答案 4 :(得分:0)
您的request
对象应该有一些有用的方法,例如getParameterNames
枚举String
或getParameterMap
,这是不言自明的。这两个都可以用来设置所有参数的循环,无论它们的数量如何。
HTH
答案 5 :(得分:0)
Enumeration<String> parameterNames = request.getParameterNames();
while (parameterNames.hasMoreElements()) {
String parameterName = parameterNames.nextElement();
if (parameterName.startsWith("field")) {
Add request.getParameter(parameterName) to ArrayList
}
}
答案 6 :(得分:0)
您可以使用getParameterValues()获取所有值来执行此操作,您必须确保页面中的所有字段都应具有相同的名称。像这样
<input type="text" name="field" id="field1"/>
<input type="text" name="field" id="field2"/>
<input type="text" name="field" id="field3"/>
<input type="text" name="field" id="field4"/>
在服务器端你可以像这样写
String[] arrFields = request.getParameterValues("field");
for(String field: arrField)
{
// put the field into the arraylist.
}