Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java getParameterValues有时从隐藏输入返回null_Java_Mysql_Jsp_Servlets - Fatal编程技术网

Java getParameterValues有时从隐藏输入返回null

Java getParameterValues有时从隐藏输入返回null,java,mysql,jsp,servlets,Java,Mysql,Jsp,Servlets,我有一个网站,当用户提交表单时,我使用了.jsp文件中的表单,该操作将转到servlet,servlet将数据插入数据库。有时它工作正常,没有任何问题,有时甚至用户提交表单nothing inserted到数据库中,并在第154行抛出NullPointerException org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet [NewServlet] in context with

我有一个网站,当用户提交表单时,我使用了.jsp文件中的表单,该操作将转到servlet,servlet将数据插入数据库。有时它工作正常,没有任何问题,有时甚至用户提交表单nothing inserted到数据库中,并在第154行抛出NullPointerException

org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for 
servlet [NewServlet] in context with path [] threw exception
java.lang.NullPointerException
at org.example.test.NewServlet.processRequest(NewServlet.java:154)
index.jsp

<form action="NewServlet" method="post">
<table>
<tbody>
<tr>
<td><sql:query dataSource="${snapshot}" var="subjects1">
SELECT * FROM glf2 ORDER BY RAND()LIMIT 1
</sql:query>
<c:set var="comments_m1" value="${subjects1.rows[0]}"/>
${comments_m1.comment_message} 
</td>
</tr>
<tr>
<td><sql:query dataSource="${snapshot}" var="subjects2">
SELECT * FROM egy ORDER BY RAND()LIMIT 1
</sql:query>
<c:set var="comments_m2" value="${subjects2.rows[0]}"/>
${comments_m2.comment_message} 
</td>
</tr>
</tbody>
</table>
<input type="hidden" name="com" value="${comments_m1.comment_message}"/>
<input type="hidden" name="com" value="${comments_m2.comment_message}"/>
<input type="submit" value="submit">  
</form> 
从数据库中选择并显示在屏幕上的注释消息,用户需要选择一些选项,然后注释消息和用户选项发送到servelt以插入数据库表中

java根据日志文件解决getParametersValues中的问题

try (PrintWriter out = resp.getWriter()) {
comment1= req.getParameterValues("com");
for(int z=0; z<comment1.length;z++)
comment[z] = new String(comment1[z].getBytes("ISO-8859-1"),"UTF-8"); 

任何人都可以建议我如何解决这个问题。

您的查询不一定返回带有注释的记录。\u消息不为空

例如,您可能需要添加一个空检查

if (comment1 != null) {
    for (int z=0; z<comment1.length;z++)
    comment[z] = new String(comment1[z].getBytes("ISO-8859-1"),"UTF-8"); 
}

您的查询不一定返回带有注释的记录。\u消息不为空

例如,您可能需要添加一个空检查

if (comment1 != null) {
    for (int z=0; z<comment1.length;z++)
    comment[z] = new String(comment1[z].getBytes("ISO-8859-1"),"UTF-8"); 
}

在插入之前检查参数值是否为Null

boolean comBool = comment1.equals("") || comment1.length<0 ;
if(!comBool){
       //Do the insertion into database
}else{
//the value from entered field is null
}

这将解决NullPointerException问题

在插入之前检查参数值是否为Null

boolean comBool = comment1.equals("") || comment1.length<0 ;
if(!comBool){
       //Do the insertion into database
}else{
//the value from entered field is null
}

这将解决NullPointerException问题,因为实际上,表单中的两个输入标记都使用了相同的名称,因为编译器可能会对要获取的值感到困惑


您应该检查将两个输入标记命名为不同。它应该可以工作。

实际上,您对表单中的两个输入标记使用了相同的名称,因为编译器可能会对要获取的值感到困惑



您应该检查将两个输入标记命名为不同。它应该可以工作。

是NewServlet.java comment1=req.getParameterValuescom;中的第154行吗;?它是int z=0的下一行;z@fgo任何建议都可以帮助我。@BalusC任何建议都可以。请将隐藏字段的名称命名为com[],然后以正确的方式获取值,即NewServlet.java comment1=req.getParameterValuescom;中的第154行;?它是int z=0的下一行;z@fgo任何建议都可以帮助我。@BalusC任何建议。请将隐藏字段的名称命名为com[],然后以正确的方式获取值。在用户在JSP中提交表单之前,它必须返回记录并将此记录显示在屏幕上。您是否在提交前右键单击页面来检查页面源的隐藏值?否,事实上,我只是发现客户进入了网站,提交了表格,但没有插入到数据库中,当我与主机检查时,他们向我显示了这个错误,这是有时会发生的。是否与范围有关,是否与同时提交表格的客户数量有关。!!我只是试图查看源代码。有一些值是select语句的结果。没有任何空值。它必须返回记录,并且在用户在JSP中提交表单之前在屏幕上向用户显示此记录。您是否在提交之前右键单击页面来检查页面源代码的隐藏值?否,事实上,我只是发现客户进入了网站,提交了表格,但没有插入到数据库中,当我与主机检查时,他们向我显示了这个错误,这是有时会发生的。是否与范围有关,是否与同时提交表格的客户数量有关。!!我只是试图查看源代码,其中有些值是select语句NOANY null的结果。不,它必须包含not null值。因此,您也需要一个not null值?该值实际上不为null,因为它在屏幕上显示为文本not null。您是否尝试过req.getParametercom;forint z=0时的误差;zI不了解您试图执行的操作,但对于值的临时存储,您可以使用会话并使用属性名称调用会话以获取值。不,它必须包含一个不为null的值。因此,您也需要一个不为null的值?该值实际上不为null,因为它在屏幕上显示为文本not null。您是否尝试过req.getParametercom;forint z=0时的误差;zI无法获得您试图执行的操作,但对于值的临时存储,您可以使用会话并使用属性名调用会话以获取值。我使用相同的名称获取所有值,作为使用getPramaterValues的字符串数组,我尝试用不同的名称重命名每个输入,然后使用getParameter获取每个输入,然后将其存储在数组中,但它仍然会在这个注释中抛出NullPointerException[z]=new Stringcomment1[z]。getBytesISO-8859-1,UTF-8。我使用相同的名称使用getPramaterValues获取字符串数组中的所有值,并尝试使用不同的名称重命名每个输入,然后使用getParameter获取每个输入,然后将其存储在数组中,但它仍然会在该注释中抛出NullPointerException[z]=new Stringcomment1[z]。GetByTessio-8859-1,UTF-8。