你把帖子转一下,转到jsp板块
解决方案 »
- struts2 购物车问题
- 为什么我的项目SSH整合AOP和事务管理不能同时使用
- 使用dwr的时候报Erroring: batchId[2] message[java.lang.null]
- 关于楼层的设定。
- 编码多少年了,想不通这样的小问题,汗(switch语句)
- 请教各位前辈,JBOSS中报错500,能教我怎么解决吗
- 大散分啦..EJB3.0问题,晕了三天啦..高手帮忙啦...
- DBfulte
- 使用SpringMVC的J2ee项目在windows下可以访问,linux下无法访问url path
- java 的API类都放在什么地方。。。JVM怎么会找不到java.net.URI类???
- 求助
- 请教一个框架的问题!很急!谢谢了啊
JSP
<form action="" method="POST">
<input type="hidden" name="page" value="basedata/pleanvm.jsp"/>
<table>
<tr>
<td>起始时间</td><td><input type="text" name="nf.like" value="<%=(session.getAttribute("nf")!=null)?session.getAttribute("nf").toString():""%>"/></td>
<td>产品名称<input type="text" name="cpmc.like" value=<%=(session.getAttribute("cpmc")!=null)?session.getAttribute("cpmc").toString():""%>/></td>
</tr>
<td>价格区间</td><td><input type="text" name="jhjg#1.>=" value=""/>到<input type="text" name="jhjg#2.<=" value=""/></td>
</tr>
<tr>
<td>
<input type="submit" name="submit" value="查询"/>
<input type="submit" name="submit" value="清除条件"/>
你的上面上个servlet类(QueryServlet)里的第34行代码出问题,原因是你的数组下标越界了.好好看看你的程序,尤其是在数组的赋值部分
<input type="hidden" name="page" value="basedata/pleanvm.jsp"/>
<table>
<tr>
<td>起始时间</td><td><input type="text" name="nf.like" value="<%=(session.getAttribute("nf")!=null)?session.getAttribute("nf").toString():""%>"/></td>
<td>产品名称<input type="text" name="cpmc.like" value=<%=(session.getAttribute("cpmc")!=null)?session.getAttribute("cpmc").toString():""%>/></td>
</tr>
<td>价格区间</td><td><input type="text" name="jhjg#1.>=" value=""/>到<input type="text" name="jhjg#2.<=" value=""/></td>
</tr>
<tr>
<td>
<input type="submit" name="submit" value="查询"/>
<input type="submit" name="submit" value="清除条件"/>
</td>
----这个地方你减去了2,那么以后就会ArryIndexOutOfBounds了
<input type="submit" name="submit" value="清除条件"/>
--------因为这个地方你2个name都是submit造成的。你改一下名字,应该可以了
急有什么用撒,
一个JSP片断。前面这么多带星的,你们就不能帮帮这个“小女子”么,
把她的代码完全调试出来嘛~
报的错误 java.lang.ArrayIndexOutOfBoundsException: 3java.lang.ArrayIndexOutOfBoundsException: 3 就是数组越界咯.
String[] fields=new String[map.size()-2];
String[] values=new String[fields.length];
int i=0;
while(enum.hasMoreElements())//没循环一次得到一个值,也是变量
{
String field=enum.nextElement().toString();
......
String value=request.getParameter(field);
fields[i]=field;//当enum大小超过fields大小,则throw ArrayIndexOutOfBoundsException
values[i]=value;
i++;
}
String[] fields=new String[(map.size()>2)?(map.size()-2):map.size()];
String[] fields=new String[map.size()-2];
String[] values=new String[fields.length];
int i=0;
while(enum.hasMoreElements()&&i<fields.length)//没循环一次得到一个值,也是变量加一个判断条件吧.就不会报数组移出的问题.
{
String field=enum.nextElement().toString();
......
String value=request.getParameter(field);
fields[i]=field;//当enum大小超过fields大小,则throw ArrayIndexOutOfBoundsException
values[i]=value;
i++;
}
老实说,数组越界已经算是比较好处理的问题了……
while(en.hasMoreElements())
{
String field=en.nextElement().toString();
out.println(field+"<br>");
}
发现输出是
jhjg#1.>=
submit
page
cpmc.like
nf.like
jhjg#2.<= 也就是说submit这个元素并不是排在最后面。
从这一句:String[] fields=new String[map.size()-2];得到field[]长度是4。这时就可以看出问题了。
当执行 while(en.hasMoreElements())//每循环一次得到一个值,也是变量
{
String field=en.nextElement().toString();
if(field.equals("submit")||field.equals("page"))
{ }else{
String value=request.getParameter(field);
fields[i]=field;
values[i]=value;
// System.out.println(field+"----"+value);
// cond+=" and "+field+" like %"+value+"%";
i++;
}
} 由于submit元素不是排在最后,以致i自加加到4, 对field[4]进行赋值,就出现了数组越界的错误。 按理说楼主的数组越界的错误应该是出现在以上说的地方。但是我修改了一下楼主的jsp代码,用tomcat简单试了一下,servlet并没有报错。这就奇怪了,为什么楼主不想出错却出错,我想它出错它偏不出错,难怪这是传说中的RPWT?
改成
String[] value=request.getParameter(field);不知道你的表单是什么样的应该不止一个值吧。。那就该用数组了
String[] value=request.getParameter(field);
多了个[],不是多此一举吗?
是不是因为我把fields[]写成field[]误会了。我的错。
我并不知道表单是什么样的如果有两个名字一样的那返回的肯定不是一个STRING吧。。