我需要您对过滤器使用的建议。只是想知道我在想什么 是一个很好的方法。
因此,我一直负责使用JSP,Spring MVC 2.5,javascript等开发5-6个屏幕。
所有 这些屏幕共享很多常见数据元素,例如下拉列表等。
我在考虑 的实现过滤器并在筛选器中的弹簧ModelMap 中填充这些下拉值,以便筛选器的URL模式 下的每个屏幕都可以获取此数据。
这是一个正确的方法吗?Spring MVC Filter解决方案
1
A
回答
2
我相信过滤器可以做到这一点,但我会远离这种方法。你也可以使用Spring的拦截器来做同样的事情,并仍然利用Spring的特性,例如依赖注入,事务管理和Spring Data包。
在您的配置调度程序设置拦截器。
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<bean class="org.my.domain.interceptors.LookupHandlerInterceptor" />
</mvc:interceptor>
</mvc:interceptors>
然后定义你的拦截器类:
public class LookupHandlerInterceptor extends HandlerInterceptorAdapter {
@Autowired
LookupLoaderApplicationListener loader;
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
request.setAttribute("lookupList", loader.getCategories());
return super.preHandle(request, response, handler);
}
}
这种方法将允许您采取的其他Spring功能的优势,你可以使用你的应用程序中,如您可能设置的任何持久性。然后你可以在你的数据库中管理这个列表。
+0
谢谢凯文。我认为要保持模型属性中的数据,我必须使用@SessionAttributes和modelMap,以在多个请求之间保持它。 – Tiles787 2013-03-08 19:05:39
1
我认为在应用程序的一个单独部分中违反最少惊喜的原则并隐藏对于控制器的正确功能至关重要的代码是不值得的。
为什么隐藏未来开发者设置屏幕的代码?
正因为他们现在都拥有共同的参考数据,他们会永远和永远吗?只要不同屏幕的要求开始发散,就会变得很难看。
你基本上有所有的缺点,使用继承而不是组成来制作一个控制器,再加上你甚至不能看到控制器的代码。我只是简单地制作一个实用的bean,执行常见的工作,将它注入控制器,然后编写一行@ModelAttribute
方法来调用它。当他们的个人需求在未来发生变化时,将会少得多。
相关问题
- 1. MVC解决方案结构
- 2. C#MVC解决方案?
- 3. MVC ERP解决方案
- 4. Spring Roo多项目解决方案
- 5. ASP.NET MVC Grid显示解决方案
- 6. 解决方案结构和Restful ASP.NET MVC
- 7. MVC解决方案变得无响应
- 8. ASP.NET Core MVC NoFun解决方案
- 9. StructureMap和多层MVC解决方案
- 10. ASP.NET MVC排队解决方案
- 11. asp.net MVC解决方案/项目布局
- 12. VS 2010解决方案取决于另一个解决方案
- 13. codechef解决方案
- 14. MSBuild解决方案
- 15. Qt:QStackedWidget解决方案
- 16. squarepie解决方案
- 17. Python解决方案
- 18. google.appengine.runtime.DeadlineExceededError解决方案?
- 19. JavaScript解决方案window.close()?
- 20. 寻找.Net解决方案的免费授权解决方案
- 21. 递归解决方案的动态编程解决方案
- 22. 我的缓存解决方案解决方案是否安全?
- 23. 重构解决方案文件夹到新解决方案
- 24. 为VS2008解决方案创建VS2010解决方案文件
- 25. Ruby解决方案替代.NET解决方案
- 26. 从C#解决方案调试C++解决方案
- 27. Visual Studio:单一解决方案还是很多解决方案?
- 28. 解决方案与2010年解决方案
- 29. 关于产品解决方案
- 30. imacros解决解决方案captcha
过滤?绝对不。也许是Spring拦截器,但是我个人不愿意这么粗暴地违反最小惊喜的原则,寻求过度微观的代码重用方法。将代码放入实用程序类中,并从每个控制器上的@ModelAttribute方法调用它。 – Affe 2013-03-08 19:00:18
@Affe我同意拦截器的方法,我已经成功实施了这种方法。 – 2013-03-08 19:03:47
感谢评论Affe。微代码重用方法是我的目标:) – Tiles787 2013-03-08 19:04:44