我的Jsp页面是ProductList.jsp
<table id="table">
<tr id="firstrow"><th>Product Name</th><th>Quantity</th> <th>Price/unit</th><th>Vendor's Name</th><th>actions</th></tr>
<tr>
<c:forEach var="current" items="${sessionScope.productname}" >
<td><c:out value="${current.productName}"/></td>
<td><c:out value="${current.quantity}"/></td>
<td><c:out value="${current.price}"/></td>
<td><c:out value="${current.vname}"/></td>
<td><form action="./editdetails" method="post"><input type="submit" value="Edit">
<input type="submit" value="Delete"></td>
</form>
</tr>
</c:forEach>
我想从中访问productName,数量,价格和vname。我试图在我的EditProductDetails.java servlet页面中获取这些表数据值。因为我需要在其他jsp页面中获取此值以进一步编辑。 这是我的代码。
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//doGet(request, response);
String productName=request.getParameter("productName");
int qnty =Integer.parseInt(request.getParameter("quantity"));
Float prce=Float.parseFloat(request.getParameter("price"));
String vendorName=request.getParameter("vname");
String action=request.getParameter("./editdetails");
if(ShowProducDetailsForEdit.showProductDetails(productName,qnty,prce,vendorName)){
request.getSession().setAttribute("productname", productName);
request.getSession().setAttribute("quantity", qnty);
request.getSession().setAttribute("price",prce);
request.getSession().setAttribute("vendorName", vendorName);
RequestDispatcher rd=request.getRequestDispatcher("Edit.jsp");
rd.include(request,response);
}
}
但是我收到了java.lang.NumberFormatException:它显示了
java.lang.NumberFormatException: null
java.lang.Integer.parseInt(Unknown Source)
java.lang.Integer.parseInt(Unknown Source)
com.pms.servlets.EditProductDetails.doPost(EditProductDetails.java:44)
javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
: 在beloow行中,request.getParameter(“”)无法识别这些值。
String productName=request.getParameter("productName");
int qnty =Integer.parseInt(request.getParameter("quantity"));
Float prce=Float.parseFloat(request.getParameter("price"));
我的问题是 - 我应该在request.getParameter(“”)中写什么?这样我的错误就不会再发生了。我是Jsp Servlet的初学者。所以我需要帮助来解决这个问题。
我的web.xml文件是
<servlet>
<servlet-name>mygenser4</servlet-name>
<servlet-class>com.pms.servlets.EditProductDetails</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>mygenser4</servlet-name>
<url-pattern>/editdetails</url-pattern>
</servlet-mapping>
答案 0 :(得分:1)
由于您的<form>
只是(注意错位的</td>
):
<td><form action="./editdetails" method="post">
<input type="submit" value="Edit">
<input type="submit" value="Delete"></td>
</form>
没有发布参数,这意味着request.getParameter()
将为任何和所有名称返回null。
要实际发布值,您需要一些内置<input>
属性的<button>
,<select>
,<textarea>
或name=
元素 <form>
。
在您的情况下,那将是<input type="hidden">
个元素(错位</td>
移动):
<td><form action="editdetails" method="post">
<input type="submit" name="action" value="Edit">
<input type="submit" name="action" value="Delete">
<input type="hidden" name="productName" value="<c:out value="${current.productName}"/>">
<input type="hidden" name="quantity" value="<c:out value="${current.quantity}"/>">
<input type="hidden" name="price" value="<c:out value="${current.price}"/>">
<input type="hidden" name="vname" value="<c:out value="${current.vname}"/>">
</form></td>
另请注意,提交按钮已被命名,因此doPost
可以检查"action"
参数以查看是否编辑或删除。