【问题标题】:Calling ActionClass in tiles.xml using Struts 2.0使用 Struts 2.0 在 tiles.xml 中调用 ActionClass
【发布时间】:2011-08-23 06:09:15
【问题描述】:

我查看了struts2.0的tile示例,发现在tiles.xml中jsp页面的调用如下:

<definition name="welcome" extends="baseLayout">
  <put-attribute name="title"  value="Welcome"/>
  <put-attribute name="body"   value="/welcome.jsp"/>      

但我的问题是,如果我想调用动作类而不是 .jsp 页面而不是如何调用它

<definition name="friends" extends="baseLayout">
  <put-attribute name="title"  value="Friends"/>
  <put-attribute name="body"   value="/checkActionLink.action"/>      

当我尝试编写执行上述代码时,它显示的错误是 checkActionLink.action 未找到......提前感谢您的帮助......

下面是web.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    id="WebApp_ID" version="2.5">
    <display-name>Struts2Example15</display-name>
    <servlet>
        <servlet-name>tiles</servlet-name>
        <servlet-class>org.apache.tiles.web.startup.TilesServlet</servlet-class>
        <init-param>
            <param-name>org.apache.tiles.impl.BasicTilesContainer.DEFINITIONS_CONFIG</param-name>
            <param-value>/WEB-INF/tiles.xml</param-value>
        </init-param>
        <load-on-startup>2</load-on-startup>
    </servlet>
    <listener>
        <listener-class>org.apache.struts2.tiles.StrutsTilesListener</listener-class>
    </listener>
    <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>
        <dispatcher>REQUEST</dispatcher>
        <dispatcher>FORWARD</dispatcher>
        <dispatcher>INCLUDE</dispatcher>
    </filter-mapping>
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
</web-app>

【问题讨论】:

    标签: struts2 tiles


    【解决方案1】:

    经过大量研究,我发现添加以下标签: &lt;dispatcher&gt;FORWARD&lt;/dispatcher&gt; web.xml 中的问题得到解决。

    现在问题出现了,为什么? 根据我的理解,当我们添加任何操作作为&lt;put-attribute/&gt; 标记的 value 属性的值时,请求将转发到提到的操作,因此操作成功执行。

    以前的&lt;dispatcher&gt;FORWARD&lt;/dispatcher&gt;标签丢失了,所以造成了这个问题。

    如果我的理解有任何更正,我将不胜感激。

    谢谢。快乐编码:)。

    【讨论】:

      【解决方案2】:

      我不认为你可以。您需要创建一个 jsp 并在其中使用 struts2 操作标记。这可以调用一个动作并渲染它的页面的一部分。如果你只使用action标签制作一个jsp,你可能会得到你想要的效果。从未尝试过,但您可能可以在调用 jsp 之前将动作名称和名称空间从磁贴插入到动作标记中。

      我很想知道这对你有什么影响。

      【讨论】:

      • 我很惊讶地看到代码通过向我的 web.xml 文件添加一些更改来工作 REQUESTFORWARDINCLUDE调度员>。说真的,我不知道它是如何工作的,但它的工作原理......希望你能找出它背后的原因......谢谢。
      • 您可以将整个 web.xml 发布到您的问题中吗?
      • 我已经发布了整个 xml 文件。请看一看。谢谢。
      猜你喜欢
      • 2018-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-14
      • 1970-01-01
      • 2013-05-05
      • 1970-01-01
      相关资源
      最近更新 更多