getParameter返回null

时间:2014-04-08 20:21:45

标签: jsp servlets

请原谅我提前提出的愚蠢问题,但这个镜头片段无效。 JSP打印出“null”查找下面的代码:

<html>
    <head>
        <title></title>
    </head>
    <body>
        <form action="ServletController" method="post">
            <input type="text" name="invoice">
            <input type="text" name="amount">
            <input type="text" name="date">
            <input type="submit">
        </form>
    </body>
</html>
public class ServletController extends HttpServlet {

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("text/html");
        String invoice = req.getParameter("invoice");
        String amount = req.getParameter("amount");
        String date = req.getParameter("date");
        //connection = new DBConn();
        //connection.createConnection(invoice, amount, date);
        req.setAttribute("attr", invoice);
        RequestDispatcher requestDispatcher = req.getRequestDispatcher("index.jsp");
        requestDispatcher.forward(req, resp);
    }
}
<html>
  <head>
    <title></title>
  </head>
  <body>
    <%-- String str = (String) request.getParameter("invoice");
    PrintWriter writer = response.getWriter();
    writer.print(str);
    --%>
  ${param.invoice}
  </body>
</html>
<servlet>
        <servlet-name>ServContr</servlet-name>
        <servlet-class>classes.ServletController</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>ServContr</servlet-name>
        <url-pattern>/ServletController</url-pattern>
    </servlet-mapping>
</servlet>

如果我把scriplet代码JSP返回“null”,在EL情况下JSP没什么。我尝试用HTML表单进行实验,因为我认为浏览器没有正确提出请求的问题,但没有。 PLease让我知道错误在哪里以及为什么$ {}不起作用。谢谢!

2 个答案:

答案 0 :(得分:1)

我的浏览器隐含地执行此操作,也许您的浏览器没有。

enctype

中添加form
<form action="ServletController" method="post" enctype="application/x-www-form-urlencoded">

以便浏览器将表单元素序列化为application/x-www-form-urlencoded内容,您可以使用HttpServletRequest#getParameter(String)检索这些内容。

答案 1 :(得分:0)

同意Sotirios Delimanolis,大多数案例都是他的解决方案,除此之外,请检查请求URL中形成的多个参数

<input type="hidden" name="regId" id="regId" />

并且提交功能类似于

function fnSubmit()
{
 document.getElementById("btnSubmit").disabled=true;
 document.forms[0].action="someURL&regId=2";
 document.forms[0].submit();
}

这将创建regId的两个值,服务器将其视为一个数组,request.getParameter将返回null,而request.getParameterValues将返回一个String数组。