【问题标题】:How to call the Struts Action class and display the data on screen using jQuery如何使用 jQuery 调用 Struts Action 类并在屏幕上显示数据
【发布时间】:2014-11-03 16:26:23
【问题描述】:

我有 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 变量。

【问题讨论】:

  • 为什么不直接显示/隐藏这个列表?
  • 那么到底是什么问题?获取数据?显示隐藏? poLink 是什么?
  • @AleksandrM:我尝试了显示/隐藏,但是如果不操作 DIV 标签,您将如何显示/隐藏记录列表?我有行 说 1 到 20,我想显示/隐藏第 6 到 15 行(这可能在运行时有所不同)。我通过为 6 yo 15 的行列表分配一个 ID 来尝试它,但它只隐藏了第 6 行,而不是其余的行。我知道 ID 应该是唯一的,因此更改为切换行的类属性。因为这 6-15 行有两个类,所以我无法切换。
  • @TJ:嘿,poLink 是其中一个链接,我点击它,从数据库中获取数据并将其显示在屏幕上。此外,数据的切换是点击 poLink
  • @Anand:是的,您可以根据某些类别切换项目。 因为我有两个类用于这 6-15 行,所以我无法切换是什么意思?这应该不是问题。

标签: jquery html ajax jsp struts2


【解决方案1】:

前提:句子

无法将 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 不适合您的情况,这可能就是您所需要的。

要坚持可简化工作的当前标准/最佳做法/工具,您应该使用:

旁注:如果你注入一个包含其他struts2-jquery标签的JSP sn-p,you need to read this

【讨论】:

  • @AleksandrM 谢谢。这可以链接到未来用户要求struts2 + ajax + jquery + json + dunno nothing about 'em,所以我认为值得进行数据挖掘工作:)
  • 好吧,在这种情况下,我还要注意,从长远来看,raw jQuery 可能会更好/不太容易。
  • 是的,从长远来看,特别是如果您使用 Struts2 以外的其他框架。但我想这是在稍后的时间(然后对有经验的用户来说变得很明显),这个答案针对尚未进行任何 AJAX 调用的用户...... struts2-jquery 插件已经成熟并且比原始 jQuery 容易得多, 首先。但是 +1 以突出显示评论:)
  • @AndreaLigios:感谢您的建议。我认为您的第一个建议可以解决我的问题。如果我获得了进行 AJAX 调用的第三个选项,我将如何分配列表。当前的数据结构是 matBeanList 具有 poBean 列表。当我调用 matBean 时,它会进行 AJAX 调用并返回该特定 matBean 的 poBean 列表。我如何将新的 poBeans 列表放入 AJAX jQuery 中的原始 matBeansList 中?
  • 我想您应该尝试并最终提出一个新问题,包括您的代码和对什么不起作用的描述(如果有)。如果此答案有助于消除您的疑虑和原始问题,请考虑接受并投票,谢谢。
猜你喜欢
相关资源
最近更新 更多
热门标签