我有jsp代码。
<table id="myTable" border="0" cellspacing="0" style="border-spacing:0; width:100%;border-collapse: collapse;">
<%
List<Object> object = (List<Object>)request.getAttribute("myContact");
for(int i=0;i<object.size();i++){
MyModel myModel = (MyModel)object.get(i);
String mail = myModel.getmail()!=null ? myModel.getmail().toString().trim() : "";
String title = myModel.gettitle()!=null ? myModel.gettitle().toString().trim() : "";
String name = myModel.getname()!=null ? myModel.getname().toString().trim() : "";
%>
<tr>
<td class="table-border-bottom"><label for="name">Name:</label></td>
<td class="table-border-bottom"><input id="name" type="text" value='<%=name%>' name="name" class="required" style="height: 17px;"/>
</td>
<td class="table-border-bottom"><label for="contactTitle">Title:</label></td>
<td class="table-border-bottom"> <input id="title" type="text" value='<%=title%>' name="title" class="required" style="height: 17px;"/>
</td>
<td class="table-border-bottom"><label for="mail">Email:</label></td>
<td class="table-border-bottom"><input id="mail" type="text" value='<%=mail%>' name="mail" class="required email" style="height: 17px; "/>
</td>
</tr>
<% } %>
<tr align="center">
<td valign="bottom" colspan="6" style="height: 45px; ">
<input type="button" id="submit" name="submit" value="Save" style="width: 80px ; height:24px; text-align: center;border-radius: 10px 10px 10px 10px;"/>
<input type="button" id="revert" name="revert" value="Revert" style="width: 80px ; height:24px;text-align: center;border-radius: 10px 10px 10px 10px;"/></td>
</tr>
</table>
要访问表单值,我可以在servlet中编写如下代码:
String name = request.getParameter("name");
String title = request.getParameter("title");
String email = request.getParameter("email");
但是我的表是动态填充的。我不会知道它有多少参数,因为表单将包含许多字段,并且通过循环从db返回的列表来填充表单。 此外,在表单中,输入名称已被硬编码。因为我将基于db返回列表有许多字段,我如何避免并为输入元素提供唯一的名称?
我怎样才能克服这个?
谢谢!
答案 0 :(得分:1)
这里最基本的用途是JSTL core:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
...
<table>
<c:forEach items="${myModel}" var="${myContact}" varStatus="count">
<tr>
// I am setting the unique name for each input here
<td><input type="text" name="name_${count.index}"/></td>
<td>${myModel.name}</td>
........
</tr>
</c:forEach>
我有already answered your question earlier。
请阅读How to avoid Java Code in JSP-Files?。
但是这里访问servlet中具有相同名称的许多输入
您可以使用ServletRequest#getParameterNames():
返回String对象的枚举,其中包含此请求中包含的参数的名称。如果请求没有参数,则该方法返回一个空的Enumeration。
从Servlet中的request
对象获取所有参数的示例代码:
Enumeration allParameterNames = request.getParameterNames();
while(allParameterNames.hasMoreElements())
{
Object object = allParameterNames.nextElement();
String param = (String)object;
String value = request.getParameter(param);
pw.println("Parameter Name is '"+param+"' and Parameter Value is '"+value+"'");
}
您也可以使用ServletRequest#getParameterMap()方法。
返回此请求参数的java.util.Map。请求参数是随请求一起发送的额外信息。对于HTTP servlet,参数包含在查询字符串或发布的表单数据中。