【问题标题】:Using Struts2 Tags in Enterprise Application在企业应用程序中使用 Struts2 标签
【发布时间】:2014-07-26 07:06:58
【问题描述】:

我创建了一个带有 EJB 模块的企业应用程序。但我还没有创建网络战争。

然后我创建了一个 Struts2 web,并将其添加到企业应用程序中。

没关系。如果我使用 HTML 标记,但是当我使用 Struts2 标记时它会抛出异常:

这里:

“HTTP 状态 500 - 内部服务器错误

输入异常报告

消息内部服务器错误

描述服务器遇到了一个内部错误,导致它无法完成这个请求。

异常

org.apache.jasper.JasperException:

找不到 Struts 调度程序。

这通常是由于使用没有关联过滤器的 Struts 标签造成的。

Struts 标签仅在请求通过其 servlet 过滤器时可用,该过滤器会初始化此标签所需的 Struts 调度程序。 - [未知位置] 根本原因

找不到 Struts 调度程序。这通常是由于使用没有关联过滤器的 Struts 标签造成的。

Struts 标签仅在请求通过其 servlet 过滤器时可用,该过滤器会初始化此标签所需的 Struts 调度程序。

  • [未知位置] note 异常的完整堆栈跟踪及其根本原因可在 GlassFish Server 开源 4.0 版日志中找到。HTTP 状态 500 - 内部服务器错误

输入异常报告

消息内部服务器错误

描述服务器遇到了一个内部错误,导致它无法完成这个请求。

异常

org.apache.jasper.JasperException:

找不到 Struts 调度程序。

这通常是由于使用没有关联过滤器的 Struts 标签造成的。 Struts 标记仅在请求通过其 servlet 过滤器时可用,该过滤器初始化此标记所需的 Struts 调度程序。 - [未知位置] 根本原因

找不到 Struts 调度程序。这通常是由于使用没有关联过滤器的 Struts 标签造成的。

Struts 标签仅在请求通过其 servlet 过滤器时可用,该过滤器会初始化此标签所需的 Struts 调度程序。

  • [未知位置] note 异常的完整堆栈跟踪及其根本原因可在 GlassFish Server Open Source Edition 4.0 日志中找到。”

【问题讨论】:

    标签: java jsp struts2 ejb ejb-3.0


    【解决方案1】:

    错误清楚地表明

    这通常是由于使用没有关联的 Struts 标签引起的 过滤

    这意味着你里面有一个JSP和struts标签,但是这个JSP没有被过滤器使用,因为它可能是一个欢迎文件,即index.jsp,错误代码文件,即404.jsp,配置在web.xml

    在涉及任何映射到资源的过滤器或 servlet 之前,这些资源由 Web 服务器处理。

    通常,欢迎文件包含一个指向有效操作的重定向代码,该操作随后分派一个可以具有 Struts 标记的 JSP。

    不要在您的应用程序中直接使用 JSP,而是使用操作。

    【讨论】:

    • 你能给我一个样品吗?谢谢
    • 我还是不知道怎么弄出来的:(我的问题是如何在企业应用程序中使用struts2标签。
    • 使用返回调度程序结果的动作,它可以是无类动作(在这种情况下使用默认动作类),如果您使用的是struts标签,那么您需要一些来自值堆栈的属性和您将一个类添加到操作以初始化这些属性。如果您将 JSP 作为结果返回,它将使用值堆栈和位于其顶部的操作来呈现 struts 标记使用的属性。
    • 你的意思是我必须先推动它做一个动作?我现在真的需要解决这个问题,因为我正在做我的项目,我不必留出时间:(
    • 我不明白你在说什么。我已经告诉过你该怎么做。要么你做,要么不做,我没有什么要补充的。
    【解决方案2】:

    异常清楚地说明了问题。

    要解析Struts 标签,您需要通过web.xml 初始化Struts Filter class

    <filter>
      <filter-name>struts2</filter-name>
      <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>
    
    <filter-mapping>
      <filter-name>struts2</filter-name>
       <url-pattern>/*</url-pattern>
    </filter-mapping>
    

    More information

    【讨论】:

    • 但是我必须把 Struts Dispatcher Servlet 放在哪里?在 Enterprice 或 EJB 模块中
    • 这可能意味着请求没有通过 Struts 过滤器,请确保正确设置了 url 模式。
    【解决方案3】:

    我遇到了同样的问题,我就是这样解决的:

    1 - 确保 web.xml 中的欢迎文件不是带有 struts 标记的文件。

    所以创建一个页面 index.jsp,将其添加到 web.xml 如下:

      <welcome-file-list>
         <welcome-file>/vues/index.jsp</welcome-file>
      </welcome-file-list>
    

    并且 index.jsp 应该只有一个代码来将用户重定向到具有 struts 标记的实际索引页面。

    <%
         response.sendRedirect(response.encodeRedirectURL(request.getContextPath()) + "/index.action");
    %>
    

    index.action 是一个没有类的动作,它的结果是引导你到你实际的索引页面,所以在 struts.xml 你将有以下内容:

        <action name="index">
            <result>jspPages/index-logged-out.jsp</result>
        </action>
    

    【讨论】:

      【解决方案4】:

      你需要在 web.xml 中配置 struts 默认过滤器调度器

      【讨论】:

      • 关于该答案的信息非常少,请更广泛地描述它
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-21
      相关资源
      最近更新 更多