好像是缺少return语句
// 用户不存在
ActionErrors errors = new ActionErrors();
errors.add("userIdnotExist", new ActionMessage("userId.notExist"));
this.saveErrors(request, errors);
return mapping.getInputForward();
// 用户不存在
ActionErrors errors = new ActionErrors();
errors.add("userIdnotExist", new ActionMessage("userId.notExist"));
this.saveErrors(request, errors);
return mapping.getInputForward();
你说的那个地方是没有问题的!
需要跳转到原来页面的我全部统一用下面的代码来实现的
String lastUrl = request.getHeader("Referer").replaceAll(
"http://" + request.getHeader("Host")
+ request.getContextPath(), "");
return new ActionForward(lastUrl, false);
// 用户不存在
ActionErrors errors = new ActionErrors();
errors.add("userIdnotExist", new ActionMessage("userId.notExist"));
this.saveErrors(request, errors);
}
String lastUrl = request.getHeader("Referer").replaceAll(
"http://" + request.getHeader("Host")
+ request.getContextPath(), "");
return new ActionForward(lastUrl, false);
1。在你拥护存在的时候,String lastUrl = request.getHeader("Referer").replaceAll(
"http://" + request.getHeader("Host")
+ request.getContextPath(), "");
return new ActionForward(lastUrl, false); 这些代码应该是没有执行的,直接被return mapping.findForward("message"); 出去了,2。这个return不是通过structs的mapping映射路径出去,而是直接转到一个.jsp文件,在你这个.jsp文件如果需要某些数据的时候会出问题(正常的是.do到.jsp),我感觉是你这个return new ActionForward(lastUrl, false); 的问题,还有你这些有逻辑的dao调用直接放到action中不合适,加一个中间层把含逻辑的东西封起来,
2.这里我只是用new ActionForward(URL,TRUE|FALSE)这个方法来提问,而且我在截取lastUrl这个值时也确定了它就是当前页面在项目目录下的相对路径。其他那2种方法:getInputForwrad()、findForward()我也试过了,一个样。
至于action内还有dao,我原来也不想这样写的,只是碰到这个问题没解决一直没心思弄别的,我原来是打算在最里面封一层单纯的数据库操作的dao实现类,在它的外面封一层专处理逻辑的dao实现类,之后再在action中直接掉用!但现在关键问题不是这个,关键是我想让它没有错误地跑起来!我昨天换了MappingDispatchAction了,把struts-config.xml中的input全都配上了,在这个地方直接用getInputForward(),也可以返回到输入页面,但是还是出现了我上面说的问题。
我觉得可能还是路径的问题,
在return new ActionForward(lastUrl, false)的时候由你的url来看是个绝对路径了,跳转成功后,点删除时本应要跳到xxx/user,而由于相对路径的问题实际跳到了xxx/xxx/user,所以给出了(/user.do) is not available,
解决办法是不用绝对的lasturl,加个mapping,
至于mapping.findForward()我第一次就是拿这个来用的!行不通!
昨晚我终于发现问题出在哪里了
我的struts配置文件出问题了
原来我的adduser.jsp是放在user文件夹下面的
我原来是配 path="/user" 页面用action="../user.do?method=addUser"的发现没问题,能行得通,就没多理了
昨晚我把它改成 path"/user/user" 页面用action="user.do?method=addUser"发现也没问题,还解决了上面的问题。。
菜鸟就是菜鸟,没法,还得多碰壁啊!
谢谢heavenfeng一起和我解决这个问题!