在Struts2提交按钮中混淆动作

时间:2011-09-16 09:58:09

标签: java jsp struts2

我正在尝试更新其他开发人员的现有代码。我面临着混乱行动的问题。

现有:

<s:form name="f2" action="delFood.action">

<input type="submit" value="Delete" class="button" onClick="javascript:get_check_value()"/>

我要更新的代码:

<input type="file" class="button" id="foodItemFile" name="foodItemFile" value="Browse ..."/>    
<input type="submit" class="button" value="AddFood" onClick="callAddFood();"/>

我的Javascript: 在我的脚本中,我尝试通过以下代码提交我的操作。

document.f2.action = "AddFoodAction.action";
document.f2.submit();

似乎当我点击[AddFood]按钮时,它总是调用[delFood.action]。

为了添加食物,我需要在调用[AddFoodAction.action]动作之前用javascripts检查一下。

由于限制,我无法更改现有代码。我只能在现有代码中添加新代码。

那么, 如何从javascripts调用[AddFoodAction.action]而不会混淆同一表单的其他动作?

非常感谢。

2 个答案:

答案 0 :(得分:1)

这里看起来像是一个javascript问题。确保代码

document.f2.action = "AddFoodAction.action";
document.f2.submit();

正在执行。也许document.f2无法正确解析(可能有多个具有此名称的表单?)。

fiddle表明它应该有效。它会在onclick上的<input type="submit">处理程序中更改表单的操作。

只是推荐,不要做document.f2.submit();。它是<input type="submit">,因此当onclick结束时它会自动提交表单。

答案 1 :(得分:1)

最后,我这样做就解决了。

1)表格标签中没有直接的行动。

<s:form name="f2" method="post" enctype="multipart/form-data">

2)删除部分,

<input type="submit" value="Delete" class="button" onClick="javascript:get_check_value()"/>

从javascript调用delete操作,而不是直接从表单调用。

document.f2.action = "delFood.action";

3)添加部分,如删除部分。检查java脚本中的必要内容并调用add动作。效果很好。

另一种解决方案:

可能会直接从Form调用一些常见操作。对于这种方法,只需命名您的按钮并给出值并从动作类中映射这些值。并通过使用来自一个动作的那些值来区分多个方法。我在coderanchjavaSample阅读了这篇文章。感谢。