使用JSP,在我的HTML中,我有一个表单,我提交到另一个页面。表单有一个包含多个元素的选择列表。在提交表单之前,在java脚本中,我确保选中列表中的所有元素。然后我将表单提交到下一页。在下一页中,我将列表中的选定值分配给java数组。当我尝试显示数组的大小或该数组中的任何值时,我得到Null Pointer Exception。
这是我的表格:
<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.
答案 0 :(得分:1)
改为警告:
alert(<%=request.getParameterValues("inputSet2")%>);
并删除此行:
String [] selectedGenes= request.getParameterValues("inputSet2");
确定inputSet2字段为空的事实。
此外,为了能够看到发送到结果页面的内容,请更改您的表单发布方法以获取:
<form name="inputGenesForm" id="test" method="get" action="result.jsp">
如果你无法缩小到下面的问题是我做了一点测试并开始工作。
form.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>
result.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>
我选择了前三个选项,获取网址是
result.jsp?select2=1&select2=2&select2=3&Submit=Submit
答案 1 :(得分:1)
尝试在选择
中添加name属性<select name="inputSet2" ...>
“只有具有name属性的表单元素才会在提交表单时传递其值。”http://www.w3schools.com/tags/att_input_name.asp
答案 2 :(得分:1)
request.getParameterValues()与“enctype =”multipart / form-data“无法结合使用”
答案 3 :(得分:0)
你不应该首先检查这个空值吗?
selectedGenes.length
getParameterValues()的文档说:
返回包含所有值的String对象数组 给定请求参数有,或者如果参数不存在则 null 。
(我的重点)
答案 4 :(得分:0)
我遇到了同样的问题,我解决了:
String [] selectedGenes = request.getParameterValues("select2[]");