我有JSP,我以表格格式显示数据列表。每个列中的一列将有3个不同的链接。在Action类中有3种不同的方法,以便在单击链接时触发相应的方法。一旦方法从Action类返回数据,将根据Action类返回的列表大小追加行数。我使用struts迭代器来迭代并添加<tr>
。我编写了jQuery来执行该操作,一切正常。
新要求是当我点击第一个链接时,它应该显示一组记录。当我再次单击第一个链接时,应删除显示的记录集。它切换了一组记录。
为了实现这一点,我创建了一个div组件,在其中添加了新的记录集并尝试执行它,但它没有按预期工作。已附加每个文件的源代码摘录。请让我知道你的想法。
JSP文件:
<s:iterator value="#mbean.myList" var="poItem">
<tr>
<td class="matlNumber"> </td>
<td><s:property value="#poItem.doc" /></td>
<td> </td>
<td> </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变量。
答案 0 :(得分:2)
前提:句子
无法将Action类返回的数据分配给JSP中的struts变量。
错误,因为there is nothing like a "Struts variable" in the rendered HTML page。
尽管如此,有几种方法可以实现您的目标(虽然不是很清楚):
在呈现网页时加载内容,然后hide / show it through javascript;这是最快的方法,但有些情况是不鼓励的,例如:
通过标准POST / GET提交添加/删除内容;这是旧的方式,你重新加载一切,重新充电,必须手动处理锚点和页面相关的操作。
通过AJAX调用添加内容,并通过javascript(原始javascript,jQuery,struts2-jQuery-plugin或其他库)删除它;如果解决方案n.1不适合您的情况,这可能就是您所需要的。
要坚持使用简化工作的现行标准/最佳做法/工具,您应该使用:
附注:如果您注入包含其他struts2-jquery
标记的JSP代码段,you need to read this。