我正在使用Javascript函数生成以下输入文本框。每个文本框都有一个唯一的ID,该ID将增加以及如下所示的唯一名称。
<input type="text" class="form-control" indexed="true" id="skills_0" name="skills_0">
<input type="text" class="form-control" indexed="true" id="skills_1" name="skills_1">
<input type="text" class="form-control" indexed="true" id="skills_2" name="skills_2">
我想在我的控制器的此文本框中检索用户填写的值。我正在使用Hibernate框架。 通常在Hibernate中,我习惯按如下方式检索值:
String name=request.getParameter("name");
但我很困惑如何在控制器端检索这个动态生成的文本框的值。我怎么知道用户在我的控制器上添加了多少技能?即用户在运行时生成的文本框数量。
答案 0 :(得分:0)
在Http中,仅使用输入的名称属性发送<form>
:
<input name="someName" value="someValueOfsomeNameInput"/>
所以在请求中它通常看起来像...&someName=someValueOfsomeNameInput
- 它没有使用&#34; id
&#34;在发送请求时。
使用不同的&#34; name&#34;生成输入。对于每一个,或迭代请求中所有参数的列表,并检查是否有您需要的参数。
输入中的所有参数都将被发送,因此为了获取列表,您可以为名称添加一些前缀,并检查参数是否以此唯一前缀开头,因此您可以通过此前缀将它们组合在一起。您也可以尝试使用相同的名称&#34;对于每个参数,那么它们可能会作为列表聚集在一起。这是一段代码片段,它迭代请求中的所有参数,使用它来检查您在请求中获得的参数以及它们的结构。
public void sysoRequestParameters(HttpServletRequest req) throws IOException {
Enumeration<String> parameterNames = req.getParameterNames();
while (parameterNames.hasMoreElements()) {
String paramName = parameterNames.nextElement();
System.out.println("--------------------------");
System.out.println("parameter name = " + paramName);
String[] paramValues = req.getParameterValues(paramName);
System.out.println("parameter values:");
for (int i = 0; i < paramValues.length; i++) {
String paramValue = paramValues[i];
System.out.println(paramValue);
}
}
out.close();
}
}