我正在处理一个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而不是选中的值。
答案 0 :(得分:1)
以下条件符合您的代码:
request
是HttpServletRequest
doGet
和doPost
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>
以下是我的输出:
现在,我确定并确认您的列表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\">");
注意:或者您可以使用'
!