-1

使用 JSP,在我的 HTML 中,我有一个提交到另一个页面的表单。该表单有一个包含多个元素的选择列表。在提交表单之前,在 java 脚本中,我确保选择了列表中的所有元素。然后我将表单提交到下一页。在下一页中,我将列表中的选定值分配给 java 数组。当我尝试显示数组的大小或该数组中的任何值时,我得到空指针异常。

这是我的列表表格:

<form name="inputGenesForm" id="test" method="POST" ACTION="result.jsp" enctype="multipart/form-data">          
    <div style=" position:absolute;top:6%;left:39%;">
    ...
    ...
    <select id="inputSet2" multiple="multiple" style="position:absolute; top: 93px; left: 270px; width: 200px; height: 200px;">

在 result.jsp 中,

<body background="image/geneBG.jpg">
<%       
    String [] selectedGenes= request.getParameterValues("inputSet2");
%>

<script>    
    alert(<%=selectedGenes.length%>);
</script>

任何人都可以帮忙吗?谢谢你。

向 result.jsp 提交表单时出错:

type Exception report

message

descriptionThe server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: java.lang.NullPointerException
root cause

java.lang.NullPointerException
note The full stack traces of the exception and its root causes are available in the GlassFish Server Open Source Edition 3.1.2.2 logs.
4

5 回答 5

1

在 results.jsp 文件中提醒这个:

alert(<%=request.getParameterValues("inputSet2")%>);

并删除这一行:

String [] selectedGenes= request.getParameterValues("inputSet2");

确定 inputSet2 字段为空的事实。

此外,为了能够查看发送到结果页面的内容,请更改您的表单发布方法以获取:

<form name="inputGenesForm" id="test" method="get" action="result.jsp">

如果你不能缩小到下面的问题,我做了一个小测试,然后开始工作。

表单.jsp

<html>
<head>
<title>Testing MultiSelect</title>
<script>
var validate= function() {
   if(document.forms.form1.select2.selectedIndex == -1) {
        alert("Please select one or more options");
        return false;
   }
   return true;
};
</script>
</head>
<body>
<form id="form1" name="form1" method="get" action="result.jsp">
      <select name="select2" size="3" multiple="multiple" tabindex="1">
        <option value="1">one</option>
        <option value="2">two</option>
        <option value="3">three</option>
        <option value="4">four</option>
        <option value="5">five</option>
        <option value="6">six</option>
        <option value="7">seven</option>
        <option value="8">eight</option>
        <option value="9">nine</option>
        <option value="10">ten</option>
      </select>
      <br>
      <input type="submit" name="Submit" value="Submit" tabindex="2" onclick="return validate()" />
</form>
</body>
</html>

结果.jsp

<html>
<head>
<title>Results Page</title>
</head>
<body>
<h1>These Are Your Results</h1>
<p>
<% String [] selectedGenes = request.getParameterValues("select2");
   for (String selectedGene : selectedGenes)
        out.println(selectedGene + "<br>");
%>
</body>
</html>

我选择了前三个选项,get url 是

result.jsp?select2=1&select2=2&select2=3&Submit=Submit
于 2012-11-28T15:27:29.477 回答
1

尝试在选择中添加名称属性

<select name="inputSet2" ...>

“只有具有 name 属性的表单元素在提交表单时才会传递它们的值。” http://www.w3schools.com/tags/att_input_name.asp

于 2012-11-28T15:43:17.307 回答
1

request.getParameterValues() 不能与“enctype="multipart/form-data" 结合使用

于 2013-01-28T21:06:00.173 回答
0

你不应该先检查这个是否有空值吗?

selectedGenes.length

getParameterValues()的文档说:

返回包含给定请求参数具有的所有值的 String 对象数组,如果参数不存在,则返回 null

(我的重点)

于 2012-11-28T15:14:12.887 回答
0

我有同样的问题,我解决了:

String [] selectedGenes = request.getParameterValues("select2[]");
于 2020-10-23T12:59:12.973 回答