从HTML中获取选定的值 - <select> - </select>框

时间:2013-09-11 06:22:45

标签: java html servlets select null

我正在处理一个Web应用程序。我有一个HTML - 选择框,其中包含50k字符串值。从这些50k值中,用户将选择一个,并且我想在SQL where子句中使用该选定值以进一步检索。但是现在使用现有代码我得到了null。代码看起来像 -

out.println("<form action=sampleServlet method=POST>");
        out.println("<select name=\"data\">");
        for(int i=0;i<nw.collectdata.length;i++)
        {
            out.println("<option value='"+nw.collectdata[i]+"'>"+nw.collectdata[i]+"</option>");
        }
        out.println("</select>");
        out.println("<button type='submit'>Submit</button>");
        out.println("</form>");
        elements = request.getParameter("data");
        out.println(elements);

元素返回null而不是选中的值。

2 个答案:

答案 0 :(得分:1)

以下条件符合您的代码:

  • requestHttpServletRequest
  • 的对象
  • 此代码位于doGetdoPost
  • 之类的方法中
  • 您是否点击了submit按钮?

如果没有,请尝试满足以上条件。我希望这会奏效。

<强>更新

我认为你的代码存在错误: 请使用并查看我在本地电脑上测试的以下代码。

out.println("<form action=\"sampleServlet\" method=\"POST\">");

而不是

out.println("<form action=sampleServlet method=POST>");

servlet代码:Test.java

@Override
public void service(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
    try {
        String[] collectdata = {"a", "b", "c", "d"};
        PrintWriter out = response.getWriter();
        response.setContentType("text/html");
        String elements = request.getParameter("data");
        out.println("<form action=\"Test\" method=\"POST\">");
        out.println("<select name=\"data\">");
        for (int i = 0; i < collectdata.length; i++) {
            out.println("<option value='" + collectdata[i] + "'>" + collectdata[i] + "</option>");
        }
        out.println("</select>");
        out.println("<button type='submit'>Submit</button>");
        out.println("</form>");
        elements = request.getParameter("data");
        out.println(elements);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

<强>的web.xml

<servlet>
    <servlet-name>Test</servlet-name>
    <servlet-class>Test</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>Test</servlet-name>
    <url-pattern>/Test</url-pattern>
</servlet-mapping>

以下是我的输出:

pandey

现在,我确定并确认您的列表nw.collectdata为空。所以你得到了空值。因为如果您在此(MyCode)代码上仅设置String[] collectdata = {};而不是String[] collectdata = {"a", "b", "c", "d"};,则您将获得null。所以我的建议是,请在列表中获取值:nw.collectdata。你也可以测试我自己的代码。

答案 1 :(得分:0)

你应该打印这样的东西:

<form action="sampleServlet" method="POST">

并在"(可行引文)内打印"...",您需要使用\
所以你必须编辑代码:

out.println("<form action=\"sampleServlet\" method=\"POST\">");

注意:或者您可以使用'