【问题标题】:how to redirect struts2 action to a url after validation?验证后如何将struts2动作重定向到url?
【发布时间】:2011-10-28 19:44:59
【问题描述】:

我有一个像这样创建 url 的操作

if (this.sequence.equals("") ) {
       action= "input";
   } else {url = "/files/" + testHTML.getName();
         action= "redirect";

    }
      return action;

在我的 struts.xml 中声明了我的操作有

        <interceptor-ref name="completeStack"/>
        <interceptor-ref name="execAndWait">
            <param name="delaySleepInterval">500</param>
        </interceptor-ref>
        <result name="wait">testwait.jsp</result>
        <result name="input">test.jsp</result>
         <result name="redirect" type="redirect">${url}</result>
    </action>

当我启动应用程序时,会创建 url,但没有重定向到这个新页面,而是重定向到 test.jsp 页面,并且出现了验证错误消息。有人有什么想法吗?

【问题讨论】:

    标签: validation url redirect struts2


    【解决方案1】:

    您的原始代码示例看起来正确。以下是一些需要检查的事项:

    • 您的操作是否有getUrl() 方法?结果的${url} 部分依赖于该方法来获取url 属性。
    • 您是否验证了每种情况下都返回了正确的结果?例如,在 else 块中“重定向”,否则为“输入”。

    【讨论】:

    • 是的,我有一个 getUrl() 方法,并且在每种情况下都会返回正确的结果......当我记录我的 java 操作时,我有一个 url 页面的链接,但在我的 jsp 中处于调试模式,动作过程中相同的值(url)为“null”
    • 尝试在ServletRedirectResult 中设置一个断点,看看它是否到达重定向。
    • ok,代码还在运行,问题出在execandwait拦截器
    【解决方案2】:

    如果你正在使用 validate 方法并且如果存在验证错误,struts 将返回结果 name="input"。在您的情况下,将重定向放入

         <result name="input" type="redirect">${url}</result>
    

    【讨论】:

    • 只有在操作中没有错误并且我想要的是看到这个新页面时才会创建 url(一个 HTML 页面)
    • 我可以看到你想要达到什么目的,起初你可以重定向到另一个动作,但你想只显示不同的 jsp 页面,所以为什么不试试这样 ${dynamicPage} 其中 ${dynamicPage}="pathToThePage"
    猜你喜欢
    • 2012-10-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-07
    • 2011-04-24
    • 1970-01-01
    • 2011-06-23
    • 2017-04-06
    • 1970-01-01
    相关资源
    最近更新 更多