我有2个JSP页面链接在一起。其中一个是具有多个复选框的表单,单击复选框,该值将发送到Proto1.jsp,其中值未转换为介绍字符串,并启动SQL命令。但是,如果没有选中复选框并且提交了表单,Proto1 jsp页面会给我一个空指针异常。无论如何,如果没有选中任何复选框,我可以将用户重定向回复选框页面吗?
这是我拥有的proto_1.jsp的代码,我在这里尝试了一堆答案,但我仍然继续获取空指针异常。
portfolio = request.getParameterValues("portfolio");
String[] portfolio = null;
if(null == request.getParameter("submit")) {
portfolio = (String[])session.getAttribute("portfolio");
} else {
portfolio = request.getParameterValues("portfolio");
session.setAttribute("portfolio", portfolio);
}
try{
OracleDataSource ds= new OracleDataSource();
//javax.sql.DataSource ds = new javax.sql.DataSource();
ds.setDriverType("thin");
ds.setServerName("localhost");
ds.setPortNumber(1521);
ds.setDatabaseName("orcl");
ds.setUser("system");
ds.setPassword("amex1234");
Connection connection = ds.getConnection();
//System.out.println("Connected Successfully");
Statement statement1 = connection.createStatement() ;
Statement statement2 = connection.createStatement() ;
Statement statement3 = connection.createStatement() ;
if (portfolio!=null)
{
for(int i=0;i<portfolio.length;i++)
{
pretestList.add(new ArrayList());
stgtestList.add(new ArrayList());
mirrorList.add(new ArrayList());
}
// System.out.println(pretestList);
//System.out.println(stgtestList);
//System.out.println(mirrorList);
for(int j=0; j<portfolio.length;j++)
{ String pretemp="";
String stgtemp="";
String mirrortemp="";
ResultSet resultsetpre = statement1.executeQuery("select ID FROM "+portfolio[j]+"_Pre") ; //Put in SQl command and Table name here
ResultSet resultsetstg = statement2.executeQuery("select ID FROM "+portfolio[j]+"_Stg") ;
ResultSet resultsetmirror = statement3.executeQuery("select ID FROM "+portfolio[j]+"_Mirror") ;
//System.out.println("pretemp "+resultsetpre.getString(1));
//System.out.println("stgtemp"+resultsetstg.getString(1));
//System.out.println("mirrortemp"+resultsetmirror.getString(1));
while(resultsetpre.next())
{
pretemp = resultsetpre.getString(1);
pretestList.get(j).add(pretemp);
}
while(resultsetstg.next())
{
stgtemp = resultsetstg.getString(1);
stgtestList.get(j).add(stgtemp);
}
while(resultsetmirror.next()){
mirrortemp= resultsetmirror.getString(1);
mirrorList.get(j).add(mirrortemp);
}
//System.out.println("pretest list"+pretestList);
//System.out.println("stgtestlist"+stgtestList);
//System.out.println("mirrorlist"+mirrorList);
}
}
} catch(SQLException e) {
e.printStackTrace();
}
%>
答案 0 :(得分:3)
if(request.getParameter("checkbox1Name") == null) //use sendRedirect method
response.sendRedirect("Proto1.jsp")
else
continue with your action or redirect to proto2.jsp
答案 1 :(得分:1)
在转换为String之前,必须检查第一页复选框值,如果它为null,则可以从JSP2转发到JSP1。
答案 2 :(得分:1)
NullCheck是这样的吗
<div ng-app="childAid" ng-controller="headerController">
<div class="container">
<h2>Displaying Header</h2>
<header-picker></header-picker>
</div>
如果未选中复选框,则会将该参数设为null。 根据您的申请,检查长度是可选的
一旦您决定要重定向回上一页,然后以这种方式重定向
String myValue = request.getParameter("myParam");
if(myValue != null && myValue.trim().length() > 0){
//Process Here
}
答案 3 :(得分:1)
处理此问题的最佳方法是检查是否缺少选定值,如果未满足所选值的要求,则拒绝表单提交。