Java spring转换服务的实际用例场景是什么

Java spring转换服务的实际用例场景是什么,java,spring-mvc,type-conversion,Java,Spring Mvc,Type Conversion,我在读这些问题 但我仍然不明白在什么情况下我们需要进行转换 有人能给我一个在web应用程序中使用转换服务的真实例子吗?Spring Webflow利用Spring的转换服务。Webflow不提供InitBinder类型的方法/注释。因此,您可以告诉Spring您希望对所有流进行的所有转换。如果转换服务不可用,则绑定支持将不可用。SpringWebFlow利用Spring的转换服务。Webflow不提供InitBinder类型的方法/注释。因此,您可以告诉Spring您希望对所有流进行的所有转换

我在读这些问题

但我仍然不明白在什么情况下我们需要进行转换


有人能给我一个在web应用程序中使用转换服务的真实例子吗?

Spring Webflow利用Spring的转换服务。Webflow不提供InitBinder类型的方法/注释。因此,您可以告诉Spring您希望对所有流进行的所有转换。如果转换服务不可用,则绑定支持将不可用。

SpringWebFlow利用Spring的转换服务。Webflow不提供InitBinder类型的方法/注释。因此,您可以告诉Spring您希望对所有流进行的所有转换。如果转换服务不可用,则绑定支持将不可用。

转换服务可用于在UI和业务对象之间直接转换

假设我有一个带有产品下拉列表的webapp。定义一个ProductConversionService很简单,它可以将下拉列表的值(比如id 4)转换为产品。现在在我的代码(控制器、API等)中,我只引用了一个产品,所有事情都是自动发生的

在较旧的UI中,我看到了大量用于此转换的代码。我将给出一个故意粗糙的例子:

String productIdParam = request.getParameter("productId");
// Validate that the param exists, is numeric, etc.....
Long productId        = Long.valueOf(productIdParam);
Product product       = productManager.findProduct(productId);
这段代码也更难测试,因为我必须创建一个模拟请求,给它一个productIdParameter等等。我还需要让productManager在任何需要的地方都可用

使用ConversionService,我可以将其放在JSP中:

<form:select path="mystuff.product">
  <option value="1">Nook</option>
  <option value="2">Cranny</option>
</form:select>

角落
裂缝

当我的Spring MVC控制器收到请求时,mystuff.getProduct()将拥有所选的产品。干净简单。我也可以在web层之外使用它。

转换服务可用于在UI和业务对象之间直接转换

假设我有一个带有产品下拉列表的webapp。定义一个ProductConversionService很简单,它可以将下拉列表的值(比如id 4)转换为产品。现在在我的代码(控制器、API等)中,我只引用了一个产品,所有事情都是自动发生的

在较旧的UI中,我看到了大量用于此转换的代码。我将给出一个故意粗糙的例子:

String productIdParam = request.getParameter("productId");
// Validate that the param exists, is numeric, etc.....
Long productId        = Long.valueOf(productIdParam);
Product product       = productManager.findProduct(productId);
这段代码也更难测试,因为我必须创建一个模拟请求,给它一个productIdParameter等等。我还需要让productManager在任何需要的地方都可用

使用ConversionService,我可以将其放在JSP中:

<form:select path="mystuff.product">
  <option value="1">Nook</option>
  <option value="2">Cranny</option>
</form:select>

角落
裂缝

当我的Spring MVC控制器收到请求时,mystuff.getProduct()将拥有所选的产品。干净简单。我也可以在web层之外使用它。

所以你的意思是我不需要它来纠正spring MVC,你不需要它,我只需要使用InitBinder就可以了。你的意思是我不需要它来纠正spring MVC,你不需要它,我只需要使用InitBinder就可以了。