나는 사용자 정의 인터셉터를 가지고 있는데, 여기서 나는 예외를 던진다.인터셉터에서 제기 된 예외가 <global-exception-mappings>에 포착되지 않는 이유는 무엇입니까?
해당 인터셉터를 실행하는 작업은 컨벤션 플러그인에 의해 관리됩니다.
인터셉터가 발생시킨 Exception은 Action이 실행중인 패키지의 struts.xml에 전역 적으로 정의됩니다.
결과 : 예외 매핑은 무시되고 나는 얻을 스트럿츠가 처리되지 않은 예외가 감지
스트럿츠 문제 보고서 :
...
스택 추적
을java.lang.IllegalArgumentException가 내 메시지 난 그냥 바보 뭔가를 놓친 것 같아
는 ... 우리는 이미이 in a similar question의 논의했지만,이 수 또는 수없는 경우는 아직 분명하지 않다
struts.xml
<package name="my-package" namespace="my" extends="struts-default">
<interceptors>
<interceptor name="myInterceptor" class="foo.bar.MyInterceptor"/>
<interceptor-stack name="myStack">
<interceptor-ref name="myInterceptor"/>
<interceptor-ref name="defaultStack"/>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="myStack"/>
<global-results>
<result name="input">/WEB-INF/content/my-input.jsp</result>
<result name="error">/WEB-INF/content/my-error.jsp</result>
</global-results>
<global-exception-mappings>
<exception-mapping exception="java.lang.IllegalArgumentException"
result="error" />
<exception-mapping exception="java.lang.Exception" result="error" />
</global-exception-mappings>
</package>
액션
@ParentPackage("my-package")
@Namespace("/my/blabla/yadayada")
public class MyAction extends MyBaseAction {
}
:이 방식으로 작동인터셉터
@Override
public String intercept(ActionInvocation actionInvocation) throws Exception {
// ....
if (somethingWrong) {
throw new IllegalArgumentException("All work and no play makes Jack a dull boy");
}
}
는 또한 추상 BaseAction 글로벌 결과/글로벌 예외 매핑을 정의, 또는 물리적 인 실제 작업 자체,하지만 그들은 너무 무시하고 시도했습니다.
추가/제거/변경해야 할 사항에 대한 아이디어가 필요합니까? 이것은 비밀스러운 것이 아닙니다. 이것은 기본입니다 : |
2.3.16.3 (struts2-jquery 플러그인 3.7.1 ... 4.0.0을 기다리는 중 비 호환으로 인해 2.3.20으로 업데이트 할 수 없음) –
지도 작성 방법이 * * 없습니다. 인터셉터가 알려진 결과로 반환 한 예외? 인터셉터에서 결과를 반환 할 수는 있지만 프로젝트 구성에서 더 이상 분리되지 않습니다 ... 예외가 반환되면 맵핑 될 수도 있고 그렇지 않을 수도 있습니다 (따라서 미화 또는 원시로 표시 될 수 있습니다). 결과를 반환하면 그것은 config ...에 정의되어야한다. 그래서 BTW는 그것을 upvote 할 수 있고 (대부분) accept 할 수있다. –
오프 토픽 : * ... struts2-jquery 플러그인 3.7.1과의 비 호환성 * 알고 계십니까? 그들의? 방금 s2-jqr 기능 중 일부를 사용하여 응용 프로그램을 업그레이드했는데 제대로 작동하는 것 같습니다. 지금은. ;) –