SSH架构遇到Http struts500问题,一直解决不了!!!!!!

Ice斌Seven 2013-08-06 07:49:31
控制台没有报错,网页报错:
HTTP Status 500 - Index: 0, Size: 0

type Exception report

message Index: 0, Size: 0

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
java.util.ArrayList.RangeCheck(ArrayList.java:547)
java.util.ArrayList.get(ArrayList.java:322)
impl.WpcountryService.find(WpcountryService.java:27)
struts.action.PersonInfoAction.addpersonInfo(PersonInfoAction.java:32)
struts.action.PersonInfoAction.personInfo(PersonInfoAction.java:24)
其中impl.WpcountryService.find(WpcountryService.java:27)这里是这样写的:
public WpCountry find(String coun_id){

ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
wpCountryDAO=(WpCountryDAO)context.getBean("WpCountryDAO");

List<WpCountry> wc = new ArrayList<WpCountry>();
wc = wpCountryDAO.findByCounName(coun_id);
WpCountry w = new WpCountry();
w = wc.get(0);
return w;


}
其中:struts.action.PersonInfoAction.addpersonInfo(PersonInfoAction.java:32)是这样的:
public boolean addpersonInfo(){
boolean s = wpuserService.addinfo(email, name, sex, personid, wpcountryService.find(country));
return s;

}
其中struts.action.PersonInfoAction.personInfo(PersonInfoAction.java:24)是这样的:
public String personInfo(){
if(addpersonInfo()){
return "yes";
}else{
return "no";
}

}
希望前辈可以帮我解决解决一下!这样是报错的,但是我这样写就不会报错:
public static void main(String[] args) {

WpcountryService wps =new WpcountryService();
WpuserService as = new WpuserService();
as.addinfo("ok", "dsa", "F", "assadsadsa", wps.find("中国"));
}
在工程里新建一个main函数,这样写是插入成功的!!!
我就搞不懂了……帮我一下吧
...全文
296 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
Ice斌Seven 2013-08-06
  • 打赏
  • 举报
回复
引用 18 楼 podongxi777442156445 的回复:
解决就好,还是建议加判断···,总是会出现小问题的
嗯嗯,好的!这次感悟发现问题才是关键!!!
Ice斌Seven 2013-08-06
  • 打赏
  • 举报
回复
总结,struts2通过set和get从网页传递过来的参数默认是utf—8的编码格式,所以要传递中文字符的话就要在struts2 的控制文件中加上一句: <constant name="struts.i18n.encoding" value="GBK" /> fighting……
暖暖猫 2013-08-06
  • 打赏
  • 举报
回复
解决就好,还是建议加判断···,总是会出现小问题的
Ice斌Seven 2013-08-06
  • 打赏
  • 举报
回复
引用 16 楼 podongxi777442156445 的回复:
struts我没用过,一直用springMVC来着,但是控制层都可以设置过滤器吧,你在过滤器里弄一下编码吧
嗯嗯,谢谢您!!!刚刚和你们讨论很快就明确了问题,然后现在解决了。我是新手,搭建了SSH架构在练习开发小型网站。刚才的问题是编码问题,struts有控制文件的,有一个属性我不懂所以没用,其实是缺了一句话<constant name="struts.i18n.encoding" value="GBK" /> 解决掉编码问题也就好了 (com.opensymphony.xwork2.interceptor.ParametersInterceptor:68) - Setting params country => [ 中国 ] email => [ 12332112333@wew ] name => [ 高三 ] personid => [ 2343241 ] sex => [ D ] yes => [ 注册 ] 谢谢你们哈!!!
暖暖猫 2013-08-06
  • 打赏
  • 举报
回复
struts我没用过,一直用springMVC来着,但是控制层都可以设置过滤器吧,你在过滤器里弄一下编码吧
Ice斌Seven 2013-08-06
  • 打赏
  • 举报
回复
引用 14 楼 podongxi777442156445 的回复:
[quote=引用 12 楼 m540920181 的回复:] [quote=引用 10 楼 DingXueBin001 的回复:] [quote=引用 9 楼 podongxi777442156445 的回复:] [quote=引用 8 楼 DingXueBin001 的回复:] [quote=引用 7 楼 podongxi777442156445 的回复:] [quote=引用 6 楼 DingXueBin001 的回复:] [quote=引用 5 楼 podongxi777442156445 的回复:] wc = wpCountryDAO.findByCounName(coun_id);这一行你确定查询出数据了?
是在main里面可以查出数据,但是放到网页中就不行,查不出数据了!!并且我其他的查询都是这样做的啊……为什么呢?[/quote] 你可以debug一下,你的list里应该是没有取到任何数值的,你的那个country是否有值呢?[/quote] country是从form表单里set和get的,用struts来处理的,这里是业务层。好像从网页那边country传递不过来啊……不明白为什么?是编码问题?但其他的中文字符都是可以的啊!我debug一下吧[/quote] 和编码应该没有关系吧,还有建议在上面的那个public WpCountry find(String coun_id){}这个方法加一个判断,如果String coun_id为空的话,直接返回false。[/quote] 我刚刚debug了一下发现是这样的,我有一个form向addInfo(.....)里传输数据,但是在控制台里 Setting params country => [ ?й? ] email => [ ashid@qq.com ] name => [ asasd ] personid => [ dsdasdas ] sex => [ A ] yes => [ ??? ]其中红色的是中文字符,country是中国,yes是登录。 是中文字符的传递错误吗?网页编码是GBK,但struts就不知道了……你看是不是这样呢?[/quote] 你这些乱码不会引出来面索引溢出的异常的,这些编码问题,与你的异常无关的[/quote] 他的异常是因为乱码问题,而且那个乱码是查询条件,查询为空,list列表无值,然后他要取第一个值,一定会报错的[/quote] 嗯,现在问题终于找到了。。。。但就是怎么转换呢?不可能每一个action都要转换一下呀,我先查一查
暖暖猫 2013-08-06
  • 打赏
  • 举报
回复
引用 12 楼 m540920181 的回复:
[quote=引用 10 楼 DingXueBin001 的回复:] [quote=引用 9 楼 podongxi777442156445 的回复:] [quote=引用 8 楼 DingXueBin001 的回复:] [quote=引用 7 楼 podongxi777442156445 的回复:] [quote=引用 6 楼 DingXueBin001 的回复:] [quote=引用 5 楼 podongxi777442156445 的回复:] wc = wpCountryDAO.findByCounName(coun_id);这一行你确定查询出数据了?
是在main里面可以查出数据,但是放到网页中就不行,查不出数据了!!并且我其他的查询都是这样做的啊……为什么呢?[/quote] 你可以debug一下,你的list里应该是没有取到任何数值的,你的那个country是否有值呢?[/quote] country是从form表单里set和get的,用struts来处理的,这里是业务层。好像从网页那边country传递不过来啊……不明白为什么?是编码问题?但其他的中文字符都是可以的啊!我debug一下吧[/quote] 和编码应该没有关系吧,还有建议在上面的那个public WpCountry find(String coun_id){}这个方法加一个判断,如果String coun_id为空的话,直接返回false。[/quote] 我刚刚debug了一下发现是这样的,我有一个form向addInfo(.....)里传输数据,但是在控制台里 Setting params country => [ ?й? ] email => [ ashid@qq.com ] name => [ asasd ] personid => [ dsdasdas ] sex => [ A ] yes => [ ??? ]其中红色的是中文字符,country是中国,yes是登录。 是中文字符的传递错误吗?网页编码是GBK,但struts就不知道了……你看是不是这样呢?[/quote] 你这些乱码不会引出来面索引溢出的异常的,这些编码问题,与你的异常无关的[/quote] 他的异常是因为乱码问题,而且那个乱码是查询条件,查询为空,list列表无值,然后他要取第一个值,一定会报错的
暖暖猫 2013-08-06
  • 打赏
  • 举报
回复
乱码了
引用 10 楼 DingXueBin001 的回复:
[quote=引用 9 楼 podongxi777442156445 的回复:] [quote=引用 8 楼 DingXueBin001 的回复:] [quote=引用 7 楼 podongxi777442156445 的回复:] [quote=引用 6 楼 DingXueBin001 的回复:] [quote=引用 5 楼 podongxi777442156445 的回复:] wc = wpCountryDAO.findByCounName(coun_id);这一行你确定查询出数据了?
是在main里面可以查出数据,但是放到网页中就不行,查不出数据了!!并且我其他的查询都是这样做的啊……为什么呢?[/quote] 你可以debug一下,你的list里应该是没有取到任何数值的,你的那个country是否有值呢?[/quote] country是从form表单里set和get的,用struts来处理的,这里是业务层。好像从网页那边country传递不过来啊……不明白为什么?是编码问题?但其他的中文字符都是可以的啊!我debug一下吧[/quote] 和编码应该没有关系吧,还有建议在上面的那个public WpCountry find(String coun_id){}这个方法加一个判断,如果String coun_id为空的话,直接返回false。[/quote] 我刚刚debug了一下发现是这样的,我有一个form向addInfo(.....)里传输数据,但是在控制台里 Setting params country => [ ?й? ] email => [ ashid@qq.com ] name => [ asasd ] personid => [ dsdasdas ] sex => [ A ] yes => [ ??? ]其中红色的是中文字符,country是中国,yes是登录。 是中文字符的传递错误吗?网页编码是GBK,但struts就不知道了……你看是不是这样呢?[/quote] 乱码了,网页编码GBK的话,你在后台能自己取到值么?能的话在后台自己转换下吧
m540920181 2013-08-06
  • 打赏
  • 举报
回复
引用 10 楼 DingXueBin001 的回复:
[quote=引用 9 楼 podongxi777442156445 的回复:] [quote=引用 8 楼 DingXueBin001 的回复:] [quote=引用 7 楼 podongxi777442156445 的回复:] [quote=引用 6 楼 DingXueBin001 的回复:] [quote=引用 5 楼 podongxi777442156445 的回复:] wc = wpCountryDAO.findByCounName(coun_id);这一行你确定查询出数据了?
是在main里面可以查出数据,但是放到网页中就不行,查不出数据了!!并且我其他的查询都是这样做的啊……为什么呢?[/quote] 你可以debug一下,你的list里应该是没有取到任何数值的,你的那个country是否有值呢?[/quote] country是从form表单里set和get的,用struts来处理的,这里是业务层。好像从网页那边country传递不过来啊……不明白为什么?是编码问题?但其他的中文字符都是可以的啊!我debug一下吧[/quote] 和编码应该没有关系吧,还有建议在上面的那个public WpCountry find(String coun_id){}这个方法加一个判断,如果String coun_id为空的话,直接返回false。[/quote] 我刚刚debug了一下发现是这样的,我有一个form向addInfo(.....)里传输数据,但是在控制台里 Setting params country => [ ?й? ] email => [ ashid@qq.com ] name => [ asasd ] personid => [ dsdasdas ] sex => [ A ] yes => [ ??? ]其中红色的是中文字符,country是中国,yes是登录。 是中文字符的传递错误吗?网页编码是GBK,但struts就不知道了……你看是不是这样呢?[/quote] 你这些乱码不会引出来面索引溢出的异常的,这些编码问题,与你的异常无关的
m540920181 2013-08-06
  • 打赏
  • 举报
回复
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 你看看,你的异常中这句,明显的溢出了
Ice斌Seven 2013-08-06
  • 打赏
  • 举报
回复
引用 9 楼 podongxi777442156445 的回复:
[quote=引用 8 楼 DingXueBin001 的回复:] [quote=引用 7 楼 podongxi777442156445 的回复:] [quote=引用 6 楼 DingXueBin001 的回复:] [quote=引用 5 楼 podongxi777442156445 的回复:] wc = wpCountryDAO.findByCounName(coun_id);这一行你确定查询出数据了?
是在main里面可以查出数据,但是放到网页中就不行,查不出数据了!!并且我其他的查询都是这样做的啊……为什么呢?[/quote] 你可以debug一下,你的list里应该是没有取到任何数值的,你的那个country是否有值呢?[/quote] country是从form表单里set和get的,用struts来处理的,这里是业务层。好像从网页那边country传递不过来啊……不明白为什么?是编码问题?但其他的中文字符都是可以的啊!我debug一下吧[/quote] 和编码应该没有关系吧,还有建议在上面的那个public WpCountry find(String coun_id){}这个方法加一个判断,如果String coun_id为空的话,直接返回false。[/quote] 我刚刚debug了一下发现是这样的,我有一个form向addInfo(.....)里传输数据,但是在控制台里 Setting params country => [ ?й? ] email => [ ashid@qq.com ] name => [ asasd ] personid => [ dsdasdas ] sex => [ A ] yes => [ ??? ]其中红色的是中文字符,country是中国,yes是登录。 是中文字符的传递错误吗?网页编码是GBK,但struts就不知道了……你看是不是这样呢?
暖暖猫 2013-08-06
  • 打赏
  • 举报
回复
引用 8 楼 DingXueBin001 的回复:
[quote=引用 7 楼 podongxi777442156445 的回复:] [quote=引用 6 楼 DingXueBin001 的回复:] [quote=引用 5 楼 podongxi777442156445 的回复:] wc = wpCountryDAO.findByCounName(coun_id);这一行你确定查询出数据了?
是在main里面可以查出数据,但是放到网页中就不行,查不出数据了!!并且我其他的查询都是这样做的啊……为什么呢?[/quote] 你可以debug一下,你的list里应该是没有取到任何数值的,你的那个country是否有值呢?[/quote] country是从form表单里set和get的,用struts来处理的,这里是业务层。好像从网页那边country传递不过来啊……不明白为什么?是编码问题?但其他的中文字符都是可以的啊!我debug一下吧[/quote] 和编码应该没有关系吧,还有建议在上面的那个public WpCountry find(String coun_id){}这个方法加一个判断,如果String coun_id为空的话,直接返回false。
Ice斌Seven 2013-08-06
  • 打赏
  • 举报
回复
引用 7 楼 podongxi777442156445 的回复:
[quote=引用 6 楼 DingXueBin001 的回复:] [quote=引用 5 楼 podongxi777442156445 的回复:] wc = wpCountryDAO.findByCounName(coun_id);这一行你确定查询出数据了?
是在main里面可以查出数据,但是放到网页中就不行,查不出数据了!!并且我其他的查询都是这样做的啊……为什么呢?[/quote] 你可以debug一下,你的list里应该是没有取到任何数值的,你的那个country是否有值呢?[/quote] country是从form表单里set和get的,用struts来处理的,这里是业务层。好像从网页那边country传递不过来啊……不明白为什么?是编码问题?但其他的中文字符都是可以的啊!我debug一下吧
暖暖猫 2013-08-06
  • 打赏
  • 举报
回复
引用 6 楼 DingXueBin001 的回复:
[quote=引用 5 楼 podongxi777442156445 的回复:] wc = wpCountryDAO.findByCounName(coun_id);这一行你确定查询出数据了?
是在main里面可以查出数据,但是放到网页中就不行,查不出数据了!!并且我其他的查询都是这样做的啊……为什么呢?[/quote] 你可以debug一下,你的list里应该是没有取到任何数值的,你的那个country是否有值呢?
Ice斌Seven 2013-08-06
  • 打赏
  • 举报
回复
引用 5 楼 podongxi777442156445 的回复:
wc = wpCountryDAO.findByCounName(coun_id);这一行你确定查询出数据了?
是在main里面可以查出数据,但是放到网页中就不行,查不出数据了!!并且我其他的查询都是这样做的啊……为什么呢?
暖暖猫 2013-08-06
  • 打赏
  • 举报
回复
wc = wpCountryDAO.findByCounName(coun_id);这一行你确定查询出数据了?
李志遠 2013-08-06
  • 打赏
  • 举报
回复
索引越界了。
小丑哥_V5 2013-08-06
  • 打赏
  • 举报
回复
Ice斌Seven 2013-08-06
  • 打赏
  • 举报
回复
是啊!!!但是为什么在main函数里就可以取到呢?难道是form表单出错了?
  • 打赏
  • 举报
回复
wc应该没有取到值。

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧