오류 줄무늬가있는 JSP 파일을 Web-Inf 디렉토리로 이동합니다
-
20-09-2019 - |
문제
나는 다음과 같은 줄무늬 액션 빈을 가지고있다 :
package myapp;
import net.sourceforge.stripes.action.*;
public class WelcomeActionBean extends MyAppActionBean {
@DefaultHandler
public Resolution view() {
return new ForwardResolution("/welcome.jsp");
}
}
브라우저에서 /myapp/welcome.action을로드하면 Welcome.jsp의 내용이 표시됩니다.
그러나 환영을 환영합니다 .jsp를 /web-inf/jsp/welcome.jsp로 이동하고 그 변화를 반영하도록 ForwardResolution 인수를 변경합니다.
return new ForwardResolution("/WEB-INF/jsp/welcome.jsp");
/myapp/welcome.action을로드하면 다음 오류가 발생합니다.
net.sourceforge.stripes.exception.ActionBeanNotFoundException: Could not locate an ActionBean that is bound to the URL [/Welcome.action]. Commons reasons for this include mis-matched URLs and forgetting to implement ActionBean in your class. Registered ActionBeans are: {/controller/DefaultView.action=class net.sourceforge.stripes.controller.DefaultViewActionBean, /myapp/MyApp.action/=class myapp.MyAppActionBean, /myapp/Welcome.action/=class myapp.WelcomeActionBean, /controller/DefaultView.action/=class net.sourceforge.stripes.controller.DefaultViewActionBean, /myapp/MyApp.action=class myapp.MyAppActionBean, /myapp/Welcome.action=class myapp.WelcomeActionBean}
net.sourceforge.stripes.controller.AnnotatedClassActionResolver.getActionBean(AnnotatedClassActionResolver.java:341)
net.sourceforge.stripes.controller.NameBasedActionResolver.getActionBean(NameBasedActionResolver.java:264)
net.sourceforge.stripes.controller.AnnotatedClassActionResolver.getActionBean(AnnotatedClassActionResolver.java:293)
net.sourceforge.stripes.controller.DispatcherHelper$1.intercept(DispatcherHelper.java:106)
net.sourceforge.stripes.controller.ExecutionContext.proceed(ExecutionContext.java:158)
net.sourceforge.stripes.controller.BeforeAfterMethodInterceptor.intercept(BeforeAfterMethodInterceptor.java:113)
net.sourceforge.stripes.controller.ExecutionContext.proceed(ExecutionContext.java:155)
net.sourceforge.stripes.controller.ExecutionContext.wrap(ExecutionContext.java:74)
net.sourceforge.stripes.controller.DispatcherHelper.resolveActionBean(DispatcherHelper.java:102)
net.sourceforge.stripes.controller.DispatcherServlet.resolveActionBean(DispatcherServlet.java:238)
net.sourceforge.stripes.controller.DispatcherServlet.service(DispatcherServlet.java:141)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
net.sourceforge.stripes.controller.StripesFilter.doFilter(StripesFilter.java:247)
Web-Inf 디렉토리에 JSP 파일을 저장하려면 특별 구성을 수행해야합니까?
해결책
내 이해는 다음과 같습니다 WelcomeActionBean
패키지가 아닌 ([웹, www, 줄무늬, 액션])에서 자동으로 처리합니다. NameBasedActionResolver
(Javadoc을 읽으십시오) 실제로 매핑됩니다. /myapp/Welcome.action
(오류 메시지에 명시된대로).
따라서 요청할 때 /Welcome.action
, 기존은 없습니다 ActionBean
해당 URL과 Resolver 폴백에 묶여 있습니다 /welcome.jsp
(다시, 참조 NameBasedActionResolver
Javadoc). 그리고 당신이 당신의 JSP를 아래로 움직일 때 /WEB-INF/jsp
, 글쎄, 당신은 행운이 부족하고 모든 것이 실패합니다.
이것을 해결하려면 :
"오른쪽"(현재 상태)에 액세스
/myapp/Welcome.action
또는, 당신이 당신의 액션 넥을 원한다면
/Welcome.action
컨벤션에 의해NameBasedActionResolver
, 예를 들어action
:package myapp.action; import net.sourceforge.stripes.action.*; public class WelcomeActionBean extends MyAppActionBean { @DefaultHandler public Resolution view() { return new ForwardResolution("/WEB-INF/jsp/welcome.jsp"); } }
또는 추가하십시오
@UrlBinding
바인딩을 명시 적으로 구성하기위한 조치에 :package myapp; import net.sourceforge.stripes.action.*; @UrlBinding("/Welcome.action") public class WelcomeActionBean extends MyAppActionBean { @DefaultHandler public Resolution view() { return new ForwardResolution("/WEB-INF/jsp/welcome.jsp"); } }
다른 팁
WEB-INF
특수 디렉토리이며 내용은 클라이언트가 액세스 할 수 없습니다. (말이됩니다 - 당신은 클라이언트가 당신의 web.xml
또는 당신의 .class
파일.)
JSP 파일을 외부로 이동해야합니다 WEB-INF
.