2012-12-07 21 views
0

我有一个要求,叫行动从行动B A多次在同一个方法调用。有什么办法可以实现它吗? 我可以给一些背景。我有一个产品特定的API,在内部使用struts实现,并且该操作只能接受一个id和一个文件对象。但是,我有一个要求为多个ID存储相同的文件。因此,我可以使用自定义操作类,可以接收多个ID,并在循环调用随产品附带的动作类。另外,我可以通过拦截器将表单数据传递给下一个动作类呼叫同一行动的形式多次提交

+0

我不是支柱专家,但它听起来好像有紧密耦合与控制器业务逻辑时,它应该是一个典范。控制器应调用模型上的业务逻辑,而不是控制器操作。 – David

+0

那么,什么阻止你? –

+0

@大卫,我们通常说的业务/服务层,因为一个Struts2的行动是一个模型(既服务和视图层),但肯定的,它似乎是问题的一部分。 – Quaternion

回答

1

您可以在表单上通过不同的动作名称(如同一UserAction类中的deleteUser,editUser,addUser)多次调用相同的动作类。

希望,这将满足您的目的。

+0

我有一个文件上传操作。我不想多次提交表单,因为它会多次传递文件数据。 – user1331243

0

我没有测试过,可能没有时间去尝试。但我认为你可以用这种方式多次调用一个单独的动作。在struts.xml中使用成功重定向到相同的动作name.Example

<action name="onSubmit" class="com.example.SubmitAction" method="upload"> 
<result name="success" type="redirect">onSubmit</result> 
<result name="error">Success.jsp</result> 
</action> 

OR

<action name="onSubmit" class="com.example.SubmitAction" method="upload"> 
<result name="success" type="redirect">onSubmitRedirect</result> 
<result name="error">Success.jsp</result> 
</action> 



<action name="onSubmitRedirect"> 
<result name="success" type="redirect">onSubmit</result> 
</action> 

您可以使用错误状态终止你循环。试试吧,我会很高兴知道它的结果。