0

我正在使用一个有点像 struts 的 MVC 框架。所以,假设我的应用程序中有一个“编辑商店”链接,这就是 URL 的样子:

http://localhost:9080/test?action=editStore&storeNum=10

现在,action 决定了我要运行的 Action(类似于 Struts Action)。这里对应的动作是:EditStoreAction。单击此按钮将打开一个弹出窗口,其中包含商店的不同属性以供编辑。

我的问题是:我如何写我的动作?在这种情况下我要写两个动作吗?

  1. 将呈现 edit.jsp 的 EditStoreAction
  2. StoreSaveAction 将在用户对 edit.jsp 的呈现响应按下接受时调用。

或者我只写一个动作吗?EditStoreAction 并将表单提交到相同的操作,我会知道用户已按下接受按钮以进行提交更改。因此,我将在 Action 中执行不同的流程,它将更新保存到数据库并重定向到差异页面。

这里最好的做法是什么?创建尽可能多的动作,因为它保持代码模块化?或者只写一个动作来处理jsp中的一切?

我知道这个问题听起来有点微不足道,但是,有时您只想把所有事情都做好。因此,问题。感谢你的帮助。

4

2 回答 2

2

这个想法类似于 Spring MVC,将您的操作映射到特定类的方法,比如控制器。

因此,在您的情况下,这两个操作将映射到同一类的两个不同方法上。你可以调用类StoreFormController和两个方法,editStore()saveStore()

如果您为每个实体制作两个控制器,那就更好了。可能一个用于所有 GET 请求,另一个用于 POST 请求。因此,在您的情况下,将有两个控制器StoreController用于所有其他请求和StoreFormController所有表单提交,即发布请求。现在,您的第一个操作是 GET 将转到editStore()方法StoreController,而第二个是 POST 请求将转到saveStore()方法StoreFormController。您可以根据请求类型在这两个类中的任何一个中定义任意数量的方法。

如果你知道 Spring MVC API,你可以很容易地看到我来自哪里。

于 2009-06-18T04:51:10.603 回答
1

我喜欢使用 struts DispatchAction 类,因为我可以在动作类(“执行”)方法中定义多个方法。在后台,它所做的只是找到它必须执行的方法(在表单中提交或在 URL 中传递),使用反射找到方法,使用正确的参数集调用它(方法必须具有相同的“执行”方法的签名),获取结果并传递。DispatchAction 只是重写 Action 类的“执行”方法来实现该行为。

话虽如此,在您的情况下,我将只定义一个类 - 比如说“DispatchStoreAction”,我将定义两种方法,可能是“准备”和“保存”。我喜欢这样做,因为我仍然有一个很好的类抽象(并且你没有将你正在执行的“动作”放在类名中),因为你的方法可以清楚地识别它们应该做什么,而且因为,根据定义,动作类往往很小。您可能会在某处定义“StoreLogic”或“StoreBusiness”,并且此类将处理与您正在处理的实体相关的业务逻辑。我个人认为如果你有一个“StoreAction”然后一个“StoreLogic”、一个“UserAction”和一个“UserLogic”会很好

检查 DispatchAction 类的源代码以了解如何执行此操作的想法,但实现应该是微不足道的。

于 2009-06-18T04:19:00.490 回答