问题标签 [spring-mvc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
7 回答
16456 浏览

java - 单元测试与 Spring 的集成测试

我正在开发一个 Spring MVC 项目,并且我对源代码树中的所有各种组件进行了单元测试。

例如,如果我有一个HomeController需要LoginService注入的控制器,那么在我的单元测试中,HomeControllerTest我只需像平常一样(在 Spring 之外)实例化对象并注入属性:

这对于将每个组件作为一个独立的单元进行测试非常有用——除了现在我在项目中有几十个类,在编写了一个类并为它编写了一个成功的单元测试之后,我一直忘记更新我的 Spring MVC 上下文文件已部署应用程序中的实际接线。我发现当我将项目部署到 Tomcat 时忘记更新上下文文件并从非连线 bean 中找到一堆 NullPointers。

所以,这是我的问题:

  1. 这是我的第一个 Spring 项目 - 像我所做的那样为单个 bean 创建单元测试是否正常,然后创建第二套测试(集成测试)来测试所有内容在实际应用程序上下文中是否按预期工作?对此是否有既定的最佳实践?

  2. 此外,如何将单元测试与集成测试分开?我有所有源代码src,单元测试在test- 是否应该有第二个测试文件夹(例如test-integration)用于集成测试用例?

由于这是我的第一个 Spring 项目,我很好奇其他人通常是如何做这种事情的——与其重新发明轮子,我更愿意询问社区的其他人。

0 投票
6 回答
36428 浏览

java - 如何将集合属性绑定到 Spring MVC 中的表单

我正在尝试使用 Spring-MVC 将我的模型对象之一绑定到表单的字段。一切正常,除了模型对象的属性之一是无序集合。做类似的事情

对于 List 类型的属性可以正常工作,但是对于 Set 在提交时尝试将输入字段内容绑定到对象属性时会引发错误。

Spring 中有什么东西可以与 Sets 一起使用吗?

0 投票
1 回答
614 浏览

spring - 各种 DispatcherServlet.detectAllXxx 标志有哪些用例?

在 Spring Web MVC 中,DispatcherServlet 有一堆标志,例如

detectAllHandlerMappings detectAllHandlerAdapters detectAllHandlerExceptionResolvers detectAllViewResolvers

它允许您在查找应用上下文中所有类型匹配的 bean 和最多查找一个在特定 ID 下匹配的 bean 之间进行选择。它们都默认为真。

我正在尝试为这些找出一个好的用例;具体来说,是否有令人信服的情况我会设置一个错误?

0 投票
7 回答
2955 浏览

javascript - 防止过时的 CSS 和 JavaScript 的最佳实践是什么

我正在为一个项目研究这个,我想知道其他人正在做什么来防止每个新版本都提供陈旧的 CSS 和 JavaScript 文件。我不想附加时间戳或类似的东西,这可能会阻止对每个请求进行缓存。

我正在使用 Spring 2.5 MVC 框架,并且我已经在使用 google api 来提供原型和脚本。我还在考虑使用 Amazon S3 和新的 Cloudfront 产品来最大限度地减少网络延迟。

0 投票
7 回答
17075 浏览

java - 如何在休眠中重用 Criteria 对象?

我正在尝试使用 hibernate 和 displaytag 对查询结果进行分页,而 HibernateDetachedCriteria对象正在尽力阻止。让我解释...

使用 displaytag 进行分页的最简单方法似乎是实现PaginatedList具有以下方法的接口:

我正在考虑将我的 PaginatedList 实现扔一个 Criteria 对象,并让它按照这些思路工作......

但这不起作用,因为addOrder()setProjection()调用修改了条件对象,使其无法用于后续调用。我不完全确定调用的顺序,但是数据库在getFullListSize()尝试执行“ select count(*) ... order by ...”时会抛出错误,这显然是错误的。

我想我可以通过创建自己的对象来跟踪查询条件并为每次调用重建 Criteria 对象来解决这个问题,但这感觉就像重新发明了另一个轮子。有没有更聪明的方法,可能复制最初传入的标准并处理该副本?

更新:它看起来像getList第一次被调用,然后getFullListSize被多次调用,所以,一旦有一个 ordering 传入,getFullListSize就会失败。getList只打一次数据库(我想说)并缓存结果是有意义的Criteria对象,但仍然......

更新(再次):忘记这一点,一旦我完成了count我不能做的select,反之亦然。我真的需要两个不同的Criteria对象。

0 投票
4 回答
15329 浏览

java - Spring MVC 表单支持对象树初始化的最佳实践

如果我有一个具有复杂对象树的表单支持对象——比如说一个人,它有一个联系信息对象,一个地址对象有一堆字符串——似乎该对象需要用组件完全填充对象之前我可以绑定到它。因此,如果我要创建一个新的 Person,我需要确保它已经填充了所有组件对象,如果我要从数据库中检索一个 Person,我需要确保所有不是从数据库中填充的对象填充为空对象。

当然,第一个问题——我的上述假设是否正确?似乎如果我尝试绑定到 person.contactInfo.homeAddress.street 并且没有 ContactInfo,我会得到一个空指针异常。

其次,初始化我的对象的最佳方法是什么。我可以想到几种方法。一种是在声明时初始化所有成员对象:

等等。

另一种方法是拥有一个初始化所有内容的 PersonFactory(或拥有一个初始化所有内容的工厂方法 Person.getInstance)。

在从数据库中检索人员的情况下,第一种方法将解决问题(即,如果此特定人员在数据库中没有地址,则该对象仍然有一个地址),但这意味着创建每个对象两次。不知道如何处理这个问题,除了让 DAO 显式填充所有内容,即使没有从数据库中检索到任何内容。或者给工厂一种方法来遍历对象并“填充”任何缺少的东西。

建议?

0 投票
3 回答
5364 浏览

java - 在 MVC 应用程序中为视图层使用 JSTL 与 Velocity 的好处?

我目前正在构建一个 Spring MVC 应用程序。我希望使用带有标记库的 JSP 页面来处理视图层和 HTML 格式,但是我遇到了我公司中的另一个小组,他们使用 Velocity 模板来实现相同的目的。

在我看来,这两种方法之间似乎有很多相似之处:

  1. 两者都有易于理解的语法。让非开发人员更容易理解和使用,让设计人员专注于 HTML/CSS,只需要在需要条件/动态内容的少数情况下使用指令/标签库,而不必完全了解爪哇。
  2. 很容易看出内容的哪些部分是 HTML 与哪些是指令/逻辑。
  3. 两者都被大量使用并得到很好的支持。
  4. 易于与 Spring MVC 集成。

但是在比较这两种技术时,我看不出使用其中一种技术的任何具体原因。我很难想到 Velocity 或 JSTL 特有的任何缺点。

所以我的问题是,您认为每种方法的优缺点是什么?如果您使用其中一个或另一个构建了一个(Spring)MVC 应用程序,是什么让您决定您正在使用的视图层技术,以及是什么(如果有的话)让您决定反对另一个?

更新:我在 Spring Framework 论坛的here上找到了关于该主题的类似讨论,这对于在 JSTL 和 Velocity 之间做出相同决定的人来说可能会有些兴趣。

0 投票
4 回答
4383 浏览

spring - 使用 Spring 进行基于 JSP 的模板

我将 Spring 的 MVC 与 JSP 视图一起使用。每个 JSP 页面都有类似的结构——页眉、内容、页脚,可能还有边栏等。四处寻找“最佳实践”的人似乎“包含”页脚和页眉,但这意味着每个 JSP 页面都包含这些“包含”语句,给出固定的格式。在我看来,更好的解决方案将涉及嵌套视图,其中使用适合相关页面的信息扩展基本模板。这种方法的一个优点是您可以在基本模板中假定默认值,而无需在其他地方重复它们。另一个优点是您可以进一步分离结构和内容(“页眉”和“页脚”是结构化的,

在 Spring 的 MVC 级别似乎没有对此的任何支持,但它可以使用自定义标签在 JSP 中实现,而且确实,这里有一个相当笨重的尝试这可能比这个问题更能解释我想要什么,虽然我认为你可以减少干扰)。

无论如何,我的问题是 - 这是否已经作为(流行/标准)标签库存在?我很高兴编写自定义标签,但我对这些东西(生成网站)的印象是已经有大量的解决方案,其中大部分工作都在选择正确的工具(例如 Spring)。谢谢。

0 投票
1 回答
3803 浏览

spring-mvc - Spring 2.5 如何将传入的请求数据映射到 ModelAttribute 命令?

我曾经使用过 Spring 2.0,现在我正在使用 Spring 2.5 当然,就 Web 控制器而言,Spring 2.5 让生活变得非常轻松。这个问题一直在我脑海中浮现,在 2.0 中,我们必须设置命令类,并相应地设置 AbstractFormController 用于为我们填充该命令对象。在 Spring 2.5 中我们不这样做,那么它是如何知道要使用哪个类的呢?它是否取决于我们将 @ModelAttribute("command") 注释为的参数类型?

如果是,那么请让我知道任何提供确切机制的“Utils”类,其中我可以传递 HttpRequest 和类名(或类对象),这将返回我填充的对象!

希望你能得到我的问题。

提前致谢。

0 投票
1 回答
17175 浏览

spring - Spring MVC 标签与自定义标签的交互

我有一个使用 Spring:form 标签将控件绑定到命令对象的 JSP。

我想对其进行如下修改:如果[某些条件为真],则显示控件;否则,只显示文本。(示例:如果用户是管理员,则显示控件,否则仅显示文本。如果 whatsit 仍可修改,则显示控件,否则显示文本。)

换句话说,我想要这个:

但我想要一种简单的方法来为每个领域(有很多)创建这个。

如果我创建一个自定义标签来生成上述文本(给定“SOME PATH”),Spring 自定义标签会被绑定吗?

我想我真正要问的是:我可以创建自定义标签来生成然后绑定的 Spring 自定义标签吗?还是同时处理所有自定义标签(我的和 Spring 的)?