当前位置: 首页 > 面试题库 >

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

范彭亮
2023-03-14
问题内容

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


问题答案:

前提:句子

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

这是错误的,因为在呈现的HTML页面中没有类似“Struts变量”的东西。

也就是说,有几种方法可以实现您的目标(尽管尚不完全清楚):

  1. 在呈现页面时加载内容 ,然后通过javascript隐藏/显示它; 这是最快的方法,但是在某些情况下不建议这样做,例如:

    • 页面加载后,内容可能已更改,因为其他用户或软件正在对其进行更新;
    • 它太大了,无法为所有记录加载它,并且内存占用量和页面加载时间变得无法接受。
    • 通过标准POST / GET提交添加/删除内容 ; 这是旧的方式,您需要重新加载所有内容,重新填充所有内容,并且必须手动处理锚点和与页面相关的操作。
  2. 通过AJAX调用添加内容 ,并通过javascript(原始javascript,jQuery,struts2-jQuery-plugin或其他库)将其删除;如果解决方案n.1不适合您的情况,则可能正是您所需要的。

为了遵守简化工作的最新标准/最佳做法/工具,您应该使用:

  • Struts2-jquery-plugin代替原始jQuery来执行AJAX调用。看看在橱窗上,都AjaxWidgets零件。您可能正在寻找Ajax-> Div-> Div - Reload示例。然后
  • 在目标div中返回JSP代码段,或者
  • 一个JSON对象,您将通过javascript手动解析该JSON对象以构建输出(减少网络流量,但需要更多工作),或提供给struts2-jquery标签。


 类似资料:
  • 问题内容: 我正在使用PIL库进行一些图像编辑。关键是,我不想每次都将图像保存在HDD上以在资源管理器中查看它。是否有一个小模块可以使我设置窗口并显示图像? 问题答案: 从PIL教程中: 一旦有了 Image 类的实例,就可以使用该类定义的方法来处理和操纵图像。例如,让我们显示刚刚加载的图像: 更新: 如今,该方法已正式记录在PIL的Pillow分支中,并说明了如何在不同的OS上实现该方法。

  • 问题内容: 如何以与IE,Firefox和Opera兼容的方式使访问者的浏览器使用JavaScript全屏显示? 问题答案: 这与您使用JavaScript进入全屏显示的时间非常接近:

  • 谁能引导我过去吗?也许我的效用不好?

  • 我试图在屏幕上垂直和水平居中显示文本。这是我的密码 如果我将flex:1添加到文本中,标题也会居中,这是不期望的。我不知道这是否相关,但我也不能修改标题视图的高度。我该如何解决这个问题?这些问题可以在这种小吃上重现。

  • 我在控制台中不断得到的错误是: core.js:6241 ERROR firebaseerror:不能使用空路径调用函数collectionreference.doc()。 我的firestore设计: 集合名称“用户”->包含每个用户的文档->每个用户都有“联系人”集合->每个联系人包含电子邮件、姓名、电话联系人属性。