我正在struts 2(struts2-core-2.0.11.jar)中创建一个带标签的窗格,如下所示。
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<s:head theme="ajax" debug="true"/>
</head>
<body>
<s:tabbedPanel id="test" >
<s:div id="one" label="Tab 1" theme="ajax">
First Tab
</s:div>
<s:div id="two" label="Tab 2" theme="ajax" href="/testAction.action">
<s:form name="second" >
second Tab
</s:form>
</s:div>
<s:div id="three" label="Tab 3" theme="ajax">
3rd Tab
</s:div>
</s:tabbedPanel>
</body>
</html>
我需要的是点击Tab 2 testAction被调用,它在struts.xml文件中定义。 由于此操作,home.jsp页面应在Tab2中设置。 Tab2数据来自数据库,因此在clickng这个标签操作类应该被调用。
<struts>
<include file="struts-default.xml"/>
<package name="a" extends="struts-default">
<action name="resultAction" class="com.test.LogingEx">
<result name="success">/success.jsp</result>
<result name="error">/error.jsp</result>
</action>
<action name="testAction" class="com.test.TestAction">
<result name="success">/home.jsp</result>
</action>
</package>
</struts>
但是在标签2上显示错误加载'/testAction.action'(404 Not Found)。单击tab2时不会调用TestAction类。
我的要求是单击每个选项卡应该调用相应的操作类,并且struts.xml文件中的jsp映射应该显示在相应的选项卡式窗格上。
请帮我解决这个问题。如果您可以提供struts2选项卡式窗格简单示例,则会显示上述情况。
提前致谢。
答案 0 :(得分:1)
如果您想使用ajax,可以使用Struts2 Jquery Plugin
Struts2 Jquery Tabbed Panel Examples
如果你想解决当前的情况,那么很明显,找不到行动,这意味着url is wrong
。您可能想要查找名称空间和&amp;其他路径错误。
答案 1 :(得分:1)
以下代码调用操作类testAction和testAction2。唯一的问题是我需要将我的罐升级到以下。在调用动作类之后,映射到动作类的jsp显示在相应的选项卡式面板中。
公地文件上传-1.2.1.jar, 共享记录-1.0.4.jar, freemarker的-2.3.8.jar, OGNL-2.6.11.jar, Struts2的核心 - 2.1.8.1.jar, struts2-jquery-plugin-3.6.1.jar和 XWork的核 - 2.1.6.jar
<%@ taglib prefix="s" uri="/struts-tags"%>
<%@ taglib prefix="sj" uri="/struts-jquery-tags"%>
<html>
<head>
<sj:head />
</head>
<body>
<s:url var="remoteurl1" action="testAction.action"/>
<s:url var="remoteurl2" action="testAction2.action"/>
<sj:tabbedpanel id="remotetabs" selectedTab="1" show="true" hide="'fade'" collapsible="true" sortable="true">
<sj:tab id="tab1" href="%{remoteurl1}" label="Remote Tab One"/>
<sj:tab id="tab2" href="%{remoteurl2}" label="Remote Tab Two"/>
</sj:tabbedpanel>
</body>
</html>