我查看了使用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>
答案 0 :(得分:3)
经过大量研究后,我发现添加以下标记:
在web.xml中<dispatcher>FORWARD</dispatcher>
问题得到解决。
现在出现问题的原因是什么?
根据我的理解,当我们添加任何操作作为<put-attribute/>
标记的 value 属性的值时,请求将转发到上述操作,以便成功执行操作。
之前<dispatcher>FORWARD</dispatcher>
标记丢失,因此导致此问题。
如果我的理解有任何更正,我将非常感激。
感谢。快乐的编码:)。
答案 1 :(得分:1)
我认为你不能。您需要创建一个jsp并在其中使用struts2 action标记。这可以调用一个动作并呈现它的页面的一部分。如果你只使用动作标签制作一个jsp,你可能会得到你想要的效果。从来没有尝试过这个,但你可以在调用jsp之前将tile中的action和namespace的名称插入action标签。
我很想知道这对你有什么影响。