我有一个关于springmvc(model)的非常基本的问题。我在做一个项目,在这个项目中我们在model中设置了很多addribute(即model.addattribute(…)。我的问题是,有没有什么设计模式可以用来避免这么多addattributes?我知道我可以创建一个bean/窗体,在它里面我也可以创建相应的setter/getter,但我只是在寻找其他可用的选项。请建议。
agxfikkp1#
如果你想使用一个设计模式来解决一个问题,你真的需要看看它们是如何相互作用的。你查过不同的设计模式吗?你有没有考虑过制造更多的对象,这样你就可以把它们分割开来并加以推广,如果你知道设计模式的话,可以采用模板法。
qpgpyjmq2#
没有特殊的设计模式,只有一些spring或通用技术来避免在给定的控制器中调用太多addattribute。如果您的视图中总是需要属性(如特定对象、列表、布尔值(如“isactivated”或“showthis”)等),您只需在控制器中添加以下方法:
@ModelAttribute("isXXXActivated") public boolean isXXXActivated(){ return isXXXActivated; }
每次调用控制器时,都会在模型中添加“isactivated”。如果在所有控制器中添加相同的属性,可以考虑将它们添加到超级控制器中(spring@controller可以毫无问题地扩展另一个@controller)。最后,如果某些属性属于一个组,则可以将它们作为对象的字段进行分组。然后您只需将此对象添加为属性。示例:将显示条件分组到显示类中。
2条答案
按热度按时间agxfikkp1#
如果你想使用一个设计模式来解决一个问题,你真的需要看看它们是如何相互作用的。你查过不同的设计模式吗?你有没有考虑过制造更多的对象,这样你就可以把它们分割开来并加以推广,如果你知道设计模式的话,可以采用模板法。
qpgpyjmq2#
没有特殊的设计模式,只有一些spring或通用技术来避免在给定的控制器中调用太多addattribute。
如果您的视图中总是需要属性(如特定对象、列表、布尔值(如“isactivated”或“showthis”)等),您只需在控制器中添加以下方法:
每次调用控制器时,都会在模型中添加“isactivated”。
如果在所有控制器中添加相同的属性,可以考虑将它们添加到超级控制器中(spring@controller可以毫无问题地扩展另一个@controller)。
最后,如果某些属性属于一个组,则可以将它们作为对象的字段进行分组。然后您只需将此对象添加为属性。示例:将显示条件分组到显示类中。