列表迭代 - 用户选择的值传递给servlet

时间:2015-12-29 05:19:16

标签: java list jsp servlets

我有一个值列表和一个列表中每个值的文本框。用户将在任何文本框中输入值。我想将该值传递给servlet ..我不知道该怎么做..

考虑一个列表有10个名字..

<form action="servlet1" method="post">
<%List names = new ArrayList();
for(int i=0; i<names.size();i++)
{
 out.println(names.get(i));%> <input type="text" name="text1">
<input type="submit" value="uvalue">
<%} %>
</form>

如果用户在文本框中输入值,我如何将names.get(i)值传递给用户输入值的servlet ...

3 个答案:

答案 0 :(得分:0)

您必须再添加一个隐藏的字段。将named.get(i)的值设置为该元素,如

    for(int i=0; i<names.size();i++)
    {
     out.println(names.get(i));%> <input type="text" name="text1">
<input type="hidden" name="names<%=i%>" value="<%=names.get(i) %>">
    <input type="submit" value="uvalue">
    <%} %>

在servlet中使用相同的循环获取名称{0..names.size legth}的值,例如names0,names1,names2 ... names(names.size)。 request.getParameter("names0")

答案 1 :(得分:0)

您可以使用下拉列表作为names列表和一个文本框进行输入,并可以使用一种形式完成工作。

此处,用户可以从下拉列表中选择名称,并在文本框中输入其值,然后可以提交表单。

在Servlet中,取两个值,即

  1. 从下拉列表中选择名称
  2. 文本框中的值。
  3. 以下是一个参考演示:

    <form action="servlet1" method="post">
    <select name="selective_name">
    <%
     List names = new ArrayList();
     for(int i=0; i<names.size();i++)
     {
      out.println("<option value="+names.get(i)+">"+names.get(i)+"</option>");
     } 
    %>
    </select>
     <input type="text" name="text1">
    <input type="submit" value="uvalue">
    
    </form>  
    

    希望它有所帮助。

答案 2 :(得分:0)

您可以使用request.getParameterValues(form_field_name)获取所有文本框值,该String[]会返回names.get(i)个值,如果您还想将<form action="servlet1" method="post"> <%List names = new ArrayList(); for(int i=0; i<names.size();i++) { out.println(names.get(i)); %> <input type="text" name="textvalues"> <input type="hidden" name="namevalues" value="<%=names.get(i)%>"> <%} %> <input type="submit" value="uvalue"> </form> 传递给服务器,我们可以使用隐藏字段那。

找到以下代码:

//to get the textbox values.
String[] textvalues = request.getParameterValues("textvalues");

// to get the name values.
String[] namevalues = request.getParameterValues("namevalues");

// index value to access the name values
int index = 0;

for (String textvalue: textvalues) {
    System.out.println("name : "+namevalues[index]+" --> value : "+textvalue);
    index++; // increment to get the next value.
}

从服务器端获取值:

        List<string> mylist = new List<string>() { "1-Cat", "2-Dog", "3-Wolf", "4-Mouse" };
        // My List Contains : 1-Cat , 2-Dog , 3-Wolf , 4-Mouse
        string text = "";
        text = mylist.FirstOrDefault(x => x.Contains('3')); // text will be 3-Wolf. In case there is no strings in the list that contains 3 text will be null.

        // If you want do some other things if the list contains "3" you can do the following:
        if (!string.IsNullOrEmpty(text))
        {
            // Do your stuff here
        }

试一试....:)