gpt4 book ai didi

java - 如何访问 servlet 中的表单值?

转载 作者:太空宇宙 更新时间:2023-11-04 07:29:34 26 4
gpt4 key购买 nike

我有下面的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");

但是我的表是动态填充的。我不会知道它有多少参数,因为表单将有许多字段,并且表单是通过循环从数据库返回的列表来填充的。此外,在表单中,输入名称已被硬编码。由于我将有许多基于数据库返回列表的字段,我如何避免并为输入元素提供唯一的名称?

我该如何克服这个问题?

谢谢!

最佳答案

这里使用的最基本的东西是 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? .

<小时/>

but here accessing many inputs with same name in servlet

您可以使用ServletRequest#getParameterNames() :

Returns an Enumeration of String objects containing the names of the parameters contained in this request. If the request has no parameters, the method returns an empty 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()方法。

Returns a java.util.Map of the parameters of this request. Request parameters are extra information sent with the request. For HTTP servlets, parameters are contained in the query string or posted form data.

关于java - 如何访问 servlet 中的表单值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17946818/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com