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

标签 java jsp servlets

我有下面的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/

相关文章:

java - Edittext达到最大edittext长度后跳转到下一个edittext

Java getDefaultToolKit() 挂起 Mac OS X 10.5

java - 如何在分数类中打印 double

java - 如何避免JSP文件中的Java代码?

java - 如何在 JSP 中将 JavaScript 值传递给 Scriptlet?

java - 在 Linux 上拖放错误期间如何实现自动滚动的解决方法?

java - 在ajax中调用java方法

java - AWS - 从 Java Servlet 执行 AMI 共享

java - servlet如何工作?实例化, session ,共享变量和多线程

java - 在 Java servlet 中终止请求花费的时间太长