我们可以在MultiActionController中定义一个PropertiesMethodNameResolver类型的成员变量“propertiesMethodNameResoler”。和定义一个Properties类型的成员变量“urlMethodmappings”在MultiActionController的bean进行配置的时候把urlMethodmappings的值作为propertiesMethodNameResoler的mapping的值。然后再调用MultiActionController的setMethodNameResolver()方法,把propertiesMethodNameResoler设置为MultiActionController的methodNameResolver的属性值。要做到这一些还应该实现InitializingBean接口。
public class MultiMethodController extends MultiActionController implements private Properties urlMethodmappings; PropertiesMethodNameResolver propertiesMethodNameResolver /**//** |
在afterPropertiesSet中,
PropertiesMethodNameResolver propertiesMethodNameResolver |
创建一个默认的PropertiesMethodNameResolver的实例
propertiesMethodNameResolver.setMappings(urlMethodmappings); |
把urlMethodmappings作为propertiesMethodNameResolver的mapping属性值
this.setMethodNameResolver(propertiesMethodNameResolver); |
调用父类方法,把propertiesMethodNameResolver注入MethodNameResolver属性中。
注意,在这里我命名为MultiMethodController是为了与MultiActionController区别。
通过这样的代码,简化了原本复杂的配置。
4.2通过一个commandName属性,可以让用户自由决定绑定对象的名称
MultiActionController的getCommandName如下:
public static final String DEFAULT_COMMAND_NAME = "command"; |
MultiActionController并没有一个setCommandName的方法,所以我们需要一个setCommandName的方法,然后重写getCommandName(Object command)方法
private String commandName =DEFAULT_COMMAND_NAME; |
如果没有设置commandName属性,默认值为“command”,通过setCommandName方法就可以自由的去决定comamnd对象的名称了。