日期:2014-05-20  浏览次数:20770 次

关于DispatchAction的问题!
最近在自学Struts的时候一直有个问题解决不了,
我在用DispatchAction来分发请求的时候,
关键代码如下:
action-mapping:
  <action 
attribute="userForm" 
path="/user"
name="userForm" 
scope="request" 
parameter="method"
type="com.yisibo.coe.struts.action.UserManageAction" />

出错误的时候我用下面的代码来实现转发:
  public ActionForward delUser(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
UserForm userform = (UserForm) form;
String userId = userform.getUserId();

// 若存在则删除
if (DAOFactory.getUserManageDAOInstance().findById(userId).size() > 0) {
if (DAOFactory.getUserManageDAOInstance().delUser(userId)) {
ActionErrors errors = new ActionErrors();
errors.add("delusersuc", new ActionMessage("deluser.success"));
this.saveErrors(request, errors);
return mapping.findForward("message");
} else {
ActionErrors errors = new ActionErrors();
errors.add("deluserfail", new ActionMessage("deluser.failure"));
this.saveErrors(request, errors);
return mapping.findForward("message");
}
} else {
// 用户不存在
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);
}
如果用户存在的时候,程序很正常
但如果用户不存在,需要跳转到原来那个页面并输出错误标签的时候就有问题了
问题是这样的:
能跳转到原来的那个页面
错误标签也能正常显示
但是页面是在没有样式表的情况下显示的
而且点击跳转后页面的删除按键会出现下面错误
type Status report
message /user.do
description The requested resource (/user.do) is not available.

请问大侠们!这个问题该如何如何解决啊?

------解决方案--------------------
仔细的看了下,又看了下actionforward的api,之前对这个对象印象不深,结合The requested resource (/user.do) is not available. 
我觉得可能还是路径的问题,
在return new ActionForward(lastUrl, false)的时候由你的url来看是个绝对路径了,跳转成功后,点删除时本应要跳到xxx/user,而由于相对路径的问题实际跳到了xxx/xxx/user,所以给出了(/user.do) is not available,
解决办法是不用绝对的lasturl,加个mapping,