0

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

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 而不是选定的值。

4

2 回答 2

1

您的代码是否满足以下条件:

  • request是对象HttpServletRequest
  • 此代码在方法内部,例如doGetdoPost
  • 你点击submit按钮了吗?

如果不是,请尝试满足上述条件。我希望这会奏效。

更新:

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

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

代替

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

小服务程序代码: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>

以下是我的输出:

潘迪

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

于 2013-09-11T06:39:30.923 回答
0

你应该打印这样的东西:

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

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

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

注意:或者你可以使用'!

于 2013-09-11T07:42:51.590 回答