如何调用Struts Action类并使用jQuery在屏幕上显示数据

时间:2014-09-10 06:04:48

标签: jquery html ajax jsp struts2

我有JSP,我以表格格式显示数据列表。每个列中的一列将有3个不同的链接。在Action类中有3种不同的方法,以便在单击链接时触发相应的方法。一旦方法从Action类返回数据,将根据Action类返回的列表大小追加行数。我使用struts迭代器来迭代并添加<tr>。我编写了jQuery来执行该操作,一切正常。

新要求是当我点击第一个链接时,它应该显示一组记录。当我再次单击第一个链接时,应删除显示的记录集。它切换了一组记录。

为了实现这一点,我创建了一个div组件,在其中添加了新的记录集并尝试执行它,但它没有按预期工作。已附加每个文件的源代码摘录。请让我知道你的想法。

JSP文件:

<s:iterator value="#mbean.myList" var="poItem">
    <tr>
        <td class="matlNumber">&nbsp;</td>
        <td><s:property value="#poItem.doc" /></td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td><s:property value="#poItem.weekOne" />  </td>
        <td><s:property value="#poItem.weekFive" /></td>
    </tr>
</s:iterator>

JS文件:

$(".poLink").click(function(){      
    var myData = $(this).closest('tr').find('td:first').text();
    document.forms[0].action = "poListMaterialPlanning.action?myData ="+myData ;
    document.forms[0].submit();
}

我尝试使用$.ajax(),但无法将Action类返回的数据分配给JSP中的struts变量。

1 个答案:

答案 0 :(得分:2)

前提:句子

  

无法将Action类返回的数据分配给JSP中的struts变量。

错误,因为there is nothing like a "Struts variable" in the rendered HTML page

尽管如此,有几种方法可以实现您的目标(虽然不是很清楚):

  1. 在呈现网页时加载内容,然后hide / show it through javascript;这是最快的方法,但有些情况是不鼓励的,例如:

    • 加载页面后内容可能已被更改,因为其他用户或软件更新了它;
    • 它太大而无法为所有记录加载它,内存占用和页面加载时间变得不可接受。
  2. 通过标准POST / GET提交添加/删除内容;这是旧的方式,你重新加载一切,重新充电,必须手动处理锚点和页面相关的操作。

  3. 通过AJAX调用添加内容,并通过javascript(原始javascript,jQuery,struts2-jQuery-plugin或其他库)删除它;如果解决方案n.1不适合您的情况,这可能就是您所需要的。

  4. 要坚持使用简化工作的现行标准/最佳做法/工具,您应该使用:

    附注:如果您注入包含其他struts2-jquery标记的JSP代码段,you need to read this