要使用Struts2的自定义对象转化,需要几个要点:
1.要有继承DefaultTypeConverter的实现类,要重写convertValue,并且参数value转化而来的String是String[],一般取第一个String,而不是String。这和Struts2为保证兼容性的机制有关。
2.在Action中一定要有需要转化的对象以及对应的get和set方法
3.如果是局部转化的话,在Action累所在的目录中需要配置对应的 properties文件
4.在前台jsp页面中,使用OGNL标签的时候,需要的textfield标签中的name属性一定要是对象的名字!而不是精确到对象属性!比如:
<s:textfield name="user" label="用户名(single)"/>
user是Action中同名的对象实例的名字,不能写成:
<s:textfield name="user.name" label="用户名(single)"/>
如果这样写的话,Struts2框架不会触发转换器。
所以如果把字符串自定义转化为对象的话,textfield中name必须写成希望转化的对象实例名称!