代码之家  ›  专栏  ›  技术社区  ›  titaniumdecoy Mr. T

将带有条纹的JSP文件移动到WEB-INF目录时出错

  •  3
  • titaniumdecoy Mr. T  · 技术社区  · 16 年前

    我有下面的条纹:

    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的内容。

    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)
    

    2 回复  |  直到 16 年前
        1
  •  5
  •   bula    6 年前

    我的理解是:你的 WelcomeActionBean NameBasedActionResolver (阅读javadoc)所以它实际上被映射到 /myapp/Welcome.action (如错误消息中所述)。

    /Welcome.action ,没有任何现有的 ActionBean 绑定到该URL,解析程序回退到 /welcome.jsp 名称BasedActionResolver /WEB-INF/jsp

    • 访问“right”(在当前状态下)URL绑定,即。 /myapp/欢迎.action

    • 或者,如果您希望将ActionBean绑定到 按照惯例,将其移动到由 名称BasedActionResolver 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");
          }
      }
      
        2
  •  -1
  •   Eli Acherkan    16 年前

    WEB-INF web.xml 或者你的 .class 文件。)

    您需要将JSP文件移到 WEB-INF