当使用ajax访问某些操作,并且spring方面抛出异常时,如何重定向某个页面

时间:2013-11-29 09:56:22

标签: ajax spring struts2

这是我的测试: TestAspect

@Component
@Aspect
public class TestAspect {
    @Before(value = "@annotation(testAnnotation)", argNames = "testAnnotation")
    public void test(TestAnnotation testAnnotation) throws RuntimeException {
        throw new RuntimeException("runtime exception");
    }
}

TestAnnotation

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface  TestAnnotation {

}

TestAction

@Controller
@Result(name = ActionSupport.SUCCESS, type = "json")
public class TestAction extends ActionSupport {

    private static final long serialVersionUID = 2680952388896234662L;

    @TestAnnotation
    public String execute() {
        return SUCCESS;
    }

}

Strust2 xml

<package name="default" extends="convention-default,json-default">
        <interceptors>
            <interceptor-stack name="mydefault">
                <interceptor-ref name="defaultStack" />
                <interceptor-ref name="json">
                    <param name="ignoreHierarchy">false</param>
                    <param name="excludeNullProperties">true</param>
                </interceptor-ref>
            </interceptor-stack>
        </interceptors>
        <default-interceptor-ref name="mydefault" />
        <global-results>

            <result name="error" type="redirect">/error.jsp</result>
        </global-results>
        <global-exception-mappings>
            <exception-mapping
                exception="java.lang.RuntimeException"
                result="error" />
        </global-exception-mappings>
    </package>

如果使用ajax(jQuery)访问test.action,则以json类型返回error.jsp。如何使浏览器重定向到error.jsp。

请告知。

非常感谢!!

1 个答案:

答案 0 :(得分:0)

在服务器端没有那么多,因为ajax客户端是需要处理的客户端。

您需要将异常(或至少一些发生异常的标记(例如http状态500))发送到客户端(浏览器),并且ajax错误处理程序必须执行重定向(大多数ajax库有一些错误)处理功能)。