struts2动态选项卡式面板动作未被调用

时间:2013-11-01 20:04:36

标签: ajax struts2 struts2-jquery

我正在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选项卡式窗格简单示例,则会显示上述情况。

提前致谢。

2 个答案:

答案 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>