如何在servlet中访问表单值?

时间:2013-07-30 12:17:12

标签: 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"); 

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

我怎样才能克服这个?

谢谢!

1 个答案:

答案 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,参数包含在查询字符串或发布的表单数据中。