OK,來處理URL是這樣的:
/someurl?fooId=3&barId=5
你需要寫這樣的事:
@RequestMapping("/someurl")
public ModelAndView myController(
@RequestParam("fooId") int fooId,
@RequestParam("barId") int barId) {
Foo foo = new Foo();
foo.bar = fooId;
Bar bar = new Bar();
bar.bar = barId;
// etc.
}
,你可以去的方式超出該解決方案並創建自定義轉換器:
public class FooConverter implements Converter<Integer, Foo> {
@Override
public Foo convert(Integer source) {
Foo foo = new Foo();
foo.bar = source;
return foo;
}
}
public class BarConverter implements Converter<Integer, Bar> {
@Override
public Bar convert(Integer source) {
Bar bar = new Bar();
bar.bar = source;
return bar;
}
}
然後在春天註冊它們之後:
<mvc:annotation-driven conversion-service="conversionService"/>
<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
<property name="converters">
<set>
<bean class="xyz.FooConverter"/>
<bean class="xyz.BarConverter"/>
</set>
</property>
</bean>
可以使用更短的溶液(其中Foo和Bar被自動轉換):
@RequestMapping("/someurl")
public ModelAndView myController(
@RequestParam("fooId") Foo foo,
@RequestParam("barId") Bar bar) {
// etc.
}
感謝。你知道爲什麼Spring MVC可以將MyObject.foo.bar命名爲foo.bar,但不理解MyObject.foo.bar?看起來很瘋狂。 – HenryR 2011-04-25 23:51:08
綁定框架是圍繞單個表單映射到具有已知上下文的單個目標對象上構建的?我能做的最好。用註釋驅動的控制器偶然地有多個目標綁定「出現」的能力。活頁夾最初是在嚴格的1:1控制器:commandObject方案中創建的。 – Affe 2011-04-26 00:18:48