刚接触struts2,遇到下面的问题,求解答!!
下面是struts.xml中的内容 
<package name="user" namespace="/user" extends="struts-default">        <action name="user" class="com.bjsxt.struts2.user.action.UserAction">
            <result>${r}</result>
        <!--${r}这种写法就代表配置文件里可以用这种方式去读valueStack(值栈)里面的内容-->
        </action>
    </package>
UserAction内容:
public class UserAction extends ActionSupport { 
    private int type; 
 
    private String r; 
 
    public String getR() { 
        return r; 
    } 
 
    public void setR(String r) { 
        this.r = r; 
    } 
 
    public int getType() { 
        return type; 
    } 
 
    public void setType(int type) { 
        this.type = type; 
    } 
 
    @Override 
    public String execute() throws Exception { 
        if(type == 1) r="/user_success.jsp"; 
        else if (type == 2) r="/user_error.jsp"; 
        return "success"; 
    } 
 
}在struts2 3.1.2中这样写<result>${r}</result>会提示借误。问了下说是3.1.2版本中取消了这种写法。我想知道那现在应该怎么写是正确的。找了好多地方都没找到。看doc文档好像也是这样写的。求解!!

解决方案 »

  1.   

    应该是*号占位符吧
    <package name="user_*" namespace="/user" extends="struts-default">
       <action name="user" class="com.bjsxt.struts2.user.action.UserAction">
          <result>/{1}.jsp</result>
       </action>
    </package>
    *号对应返回页面,如果你想返回login.jsp,你连接action的时候就写为:user_login
      

  2.   

    实在不行换一种写法也可以。
    action:
    if xxx{
    return "success";
    } else if xxx{
    return "error";
    }struts.xml:
    <result name="success">/user_success.jsp</result>
    <result name="error">/user_error.jsp</result>
      

  3.   

    哎,搞乌龙了。我这边用的myeclips,写完后上边显示个红叉,提示invalid result location value/parameter。我认为报错了就一直没去运行。刚看了几位那么肯定的回答,我运行了一遍,确实是正常的。还是很感谢各位。不过就是为什么没有错myeclips却总是提示错误。郁闷!!
      

  4.   

    我也遇到过这种情况,好像是因为myeclips没反应过来,你可以右键单击项目中close Project,然后再打开试试。
      

  5.   

    其实真的有错的,好像是不认这种OGNL写法似的,不知你解决没有?