有帮助吗?

解决方案

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

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

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

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

其他提示

我喜欢使用struts DispatchAction类,因为我可以在action类(“execute”)方法中定义多个方法。在幕后,它所做的只是找到它必须执行的方法(在表单中提交或在URL中传递),使用反射查找方法,使用正确的参数集调用它(方法必须具有相同的方法) “执行”方法的签名,得到结果并传递它。 DispatchAction简单地覆盖了“执行”和“执行”。 Action类的方法来实现该行为。

话虽如此,在你的情况下,我只会定义一个类 - 让我们说“DispatchStoreAction”,我会定义两个方法,可能是“准备”。和“保存”。我喜欢这样做因为我仍然有一个很好的类抽象(并且你没有把你在类名中执行的“动作”),因为你的方法可以清楚地识别他们应该做什么,以及也因为根据定义,行动类往往很小。你可能会有一个“StoreLogic”或“StoreBusiness”或在某处定义,此类将处理与您正在处理的实体相关的业务逻辑。我个人认为,如果你有一个“StoreAction”,那就太好了。然后是一个“StoreLogic”,一个“UserAction”和“UserAction”。和一个“UserLogic”等等 - 关系不需要是1对1,但我认为它有助于维护代码。

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

scroll top