Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在struts迭代器生成的单个表单中调用多个操作_Java_Jsp_Jakarta Ee_Struts2 - Fatal编程技术网

Java 如何在struts迭代器生成的单个表单中调用多个操作

Java 如何在struts迭代器生成的单个表单中调用多个操作,java,jsp,jakarta-ee,struts2,Java,Jsp,Jakarta Ee,Struts2,我有一个票证对象列表,我正在使用struct标记在jsp中显示这些对象。列表工作正常,行渲染正确。我需要做的是为每一行提供两个功能-详细信息和更新 我的JSP的一部分 <script type="text/javascript"> function details() { document.forms['ticketForm'].action="viewTicket.do"; document.forms['ticketForm'].submit(); } <

我有一个票证对象列表,我正在使用struct标记在jsp中显示这些对象。列表工作正常,行渲染正确。我需要做的是为每一行提供两个功能-详细信息更新

我的JSP的一部分

<script type="text/javascript">

function details()
{
    document.forms['ticketForm'].action="viewTicket.do";
    document.forms['ticketForm'].submit();
}

</script>

                       <s:iterator value="ticketList" var="tl">
                        <tr>
                        <!-- The problem form which should call 2 actions -->
                        <s:form id="ticketForm" action="updateTicket" theme="simple">
                        <!-- This hidden field is required in both actions -->
                        <s:hidden name="ticketId" value="%{#tl.id}" />
                        <td valign="top" width="5%"><s:property value="id" /></td>
                        <td valign="top"><s:property value="requesterName" /></td>
                        <td valign="top"><s:property value="guestName" /></td>
                        <input type="button" value="Details" onClick="Javascript:details()" />
                        <s:submit value="Update" />
                          </td>
                          </s:form>
                        </tr>

                        <tr>
                          <td colspan="10"><script language="JavaScript">Rule();</script></td>
                        </tr>
                        </s:iterator>

函数详细信息()
{
document.forms['ticketForm'].action=“viewTicket.do”;
document.forms['ticketForm'].submit();
}
规则();
现在的问题是: 1) UpdateCket操作可以正常工作,但viewTicket操作(通过javascript呈现的操作)不能正常工作。无论单击哪一行,它都会调用第2行中的票证详细信息。如果我在第二个操作中使用s:submit而不是s:submit,那么表单的默认操作,即updatecket将一直被调用。我怎样才能解决这个问题


2) 第1行中的更新票证不起作用。它总是重新加载同一页并做一些奇怪的事情。但是,更新票证操作在所有其他行中都正常工作。

您从何处读取票证id,您应该显示其详细信息

我想这是一个,但请记住,您使用的是一个迭代器,id是一个常量。因此它只能保存一个值,这将是迭代器的最后一个值。尝试从浏览器查看html生成源代码,查看此字段的值

解决方法: 改为(更新和查看):

s:url

s:param

样本

<s:url action="urlTagAction.action" >
    <s:param name="id">123</s:param>
</s:url>

123

尝试为每个表单分配不同的id,然后运行应用程序。在JSP和Javascript上对代码进行以下更改

JSP更改

 <s:iterator value="ticketList" var="tl" status="stat">
                        <tr>
                        <!-- The problem form which should call 2 actions -->
                        <s:form id="ticketForm%{#stat.index}" action="updateTicket" theme="simple">
                        <!-- This hidden field is required in both actions -->
                        <s:hidden name="ticketId" value="%{#tl.id}" />
                        <td valign="top" width="5%"><s:property value="id" /></td>
                        <td valign="top"><s:property value="requesterName" /></td>
                        <td valign="top"><s:property value="guestName" /></td>
                        <input type="button" value="Details" onClick="Javascript:details(<s:property value='%{#stat.index}' />)" />
                        <s:submit value="Update" />
                          </td>
                          </s:form>
                        </tr>

                        <tr>
                          <td colspan="10"><script language="JavaScript">Rule();</script></td>
                        </tr>
                        </s:iterator>
function details(index)
{
    document.forms['ticketForm'+index].action="viewTicket.do";
    document.forms['ticketForm'+index].submit();
}

希望这能有所帮助:)

这很有效!!非常感谢你。但我的另一个问题仍然存在——第一排的所有动作都不起作用。无…当您从第一行提交表单时,服务器控制台是否出现异常?无异常。没什么。客户端代码看起来也不错。可能是内部的。当你提交浏览器中出现的url是什么