spring转换服务的真实用例场景是什么?

时间:2011-03-08 15:30:37

标签: java spring-mvc type-conversion

我正在阅读这些问题

ConversionService in Spring

但在我们需要进行转换的情况下,我仍然无法得到它。

有人能举例说明在web apllicationj

中使用转换服务的真实例子吗?

2 个答案:

答案 0 :(得分:2)

Spring Webflow使用spring的转换服务。 Webflow不提供InitBinder类型方法/注释的可用性。因此,您告诉Spring您希望为所有流程完成的所有转换。如果ConversionService不可用,则绑定支持将不可用。

答案 1 :(得分:1)

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

假设我有一个带有产品下拉列表的webapp。定义ProductConversionService可以直接从下拉列表(例如,id 4)转换为Product。现在在我的代码(控制器,API等)中,我只是引用一个产品,一切都会自动发生。

在较旧的用户界面中,我看到了大量用于此转换的代码。我会故意给出一个粗略的例子:

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()具有所选产品。干净简单。我也可以在网络层之外使用它。