这是我的struts2.xml文件
<package name="/" extends="default" namespace="/">
<action name="userAction" class="cn.com.ivisions.action.CmsUserAction">
<result name="welcome">welcome.jsp</result>
<result name="error">login.jsp</result>
<result name="addSuccess" type="chain">userAction!listUser.action</result>
<result name="listUser">user/userList.jsp</result>
</action>
</package>public class CmsUserAction extends BaseAction{
/**
 * 添加用户
 * @return
 */
public String addUser(){
try {
user.setRegtime(new Timestamp(System.currentTimeMillis()));
user.setCruser(((CmsUser)getSession().get("loginUser")).getUserName());
user.setPassword("123456");
MD5andKL md5=new MD5andKL();
String pw="";
pw=md5.MD5(user.getPassword());
user.setPassword(pw);
if (user.getIfpubmyinfo()==null) {
user.setIfpubmyinfo(new Integer(1));//是否公开信息,默认为1公开,0为不公开
}
cmsUserService.addUser(user);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}

this.addActionMessage("<script>alert('添加用户成功!');</script>");
return "addSuccess";
}
/**
 * 用户列表
 * @return
 */
public String listUser(){
List<CmsUser> users=null;
List<CmsMenu> menus=null;
// 管理工具
String menuName = "userManager";

try {
users=cmsUserService.userList();
getRequest().setAttribute("users", users);
menus=(List<CmsMenu>)cmsMenuService.listSubMenus(menuName, ((CmsUser)getSession().get("loginUser")).getUserId());
getRequest().setAttribute("menus", menus);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
return "listUser";
}
}
以上两个方法是在同一个action中,我在添加的页面中通过userAction!addUser.action请求访问了addUser这个方法,
然后addUser方法调用完,我return  “addSuccess”,这个应该对应配置文件的这个<result name="addSuccess" type="chain">userAction!listUser.action</result>,为什么我访问不能够调用listUser这个方法。请问,在线等待。

解决方案 »

  1.   

    <result name="addSuccess" type="redirectAction">userAction</result>自己去看看调转方式吧,dispatcher 转发,redirectAction 重定向另一个Action
      

  2.   

    我知道每一个action对应一个方法,可以这个<result name="addSuccess" type="chain">action名字</result>这样不会错,是不是<result name="addSuccess" type="chain">action名!方法名.action</result>这种不能通过设置type=“chain”
      

  3.   

    可以去web.xml文件中看看有没有struts2的<dispatch>的配置
      

  4.   

    你的配置文件type写错了
    我提供你一个列表,你看看改如何改你就知道了
    Chain Result - 用于 Action Chaining
    Dispatcher Result - 用于 JSP 整合
    FreeMarker Result - 用于 FreeMarker 整合
    HttpHeader Result - 用于控制特殊的HTTP行为
    JasperReports Result - 用于 JasperReports 整合
    Redirect Result - 用于直接跳转到例外的URL
    Redirect Action Result - 用于直接跳转到另外的action
    Stream Result - 用于向浏览器返回一个InputStream (一般用于文件下载)
    Velocity Result - 用于 Velocity 整合
    XSL Result - 用于 XML/XSLT 整合
      

  5.   

    你配置method的话 要通配符那种配置方式,你这样貌似不能访问每个方法吧
     <action name="peMajor_*" method="{1}" class="peMajorAction">像这样配置一下试试
      

  6.   

    是不是<result name="addSuccess" type="chain">action名!方法名.action</result>这种写法不能用type=“chain”
      

  7.   


    你这个是跳转的配置,你提交的url和这个没有太直接的关系
    我给你的配置详解是叫你看看,如果你result跳转一个url而不是一个jsp页面的话,你看看type应该是什么
      

  8.   

    都不知道你是怎么进方法的。你的配置里面没看见你配置method参数。如果你的action里有execute的话那你跳转到本action它就先去execute()方法了。
      

  9.   

    兄弟 其实这个问题很简单 你想一想  struts2里面有个规则 一个请求对应一个action    当你想用 action   调用 action   的时候  type属性应该就要用  redirectAction  (重定向)  希望对你有用 
      

  10.   

    同一个action里为什么不return listUser();
      

  11.   

    this.addActionMessage("<script>alert('添加用户成功!');</script>");
    去掉试一试 
      

  12.   

    <result type="chain">
    <param name="actionName">xxx</param>
    <param name="method">xxx</param>
    </result>
    这么调用试试