我正在尝试使用自定义类型转换和属性文件来执行操作。
Action 类正在为 bean 属性实现 ModelDriven。
public class WelcomeAction extends ActionSupport implements ModelDriven<MyBean>{
public String execute(){
return SUCCESS;
}
private MyBean bean = new MyBean();
@Override
public MyBean getModel() {
return bean;
}
}
Bean 类是:
public class MyBean{
private Rectangle rectangle;
public Rectangle getRectangle() {
return rectangle;
}
public void setRectangle(Rectangle rectangle) {
this.rectangle = rectangle;
}
}
我有 WelcomeAction-conversion.properties
文件与操作类并行,转换器配置为:
bean.rectangle=struts2.typeconverters.RectangleTypeConverter
我尝试将 key 设置为 bean、矩形等,但它不起作用,它没有使用转换器类。
如果我使用@TypeConverter
注释或全局转换器,那么它工作正常。
我的 struts 2 版本是 2.3.15.1,知道可能是什么问题。
更新:创建了一个问题 https://issues.apache.org/jira/browse/WW-4249
得到正确的实现方法:http://www.journaldev.com/2221/struts-2-ognl-tutorial-with-custom-type-converter-example
最佳答案
如果您的 Action 类使用模型驱动,那么您需要遵循以下自定义类型转换器方法:
http://struts.apache.org/release/2.3.x/docs/type-conversion.html (请参阅标题为“将类型转换器应用于 bean 或模型”的部分)。
在您的示例中,我将转换属性文件名更改为 MyJavaBean-conversion.properties 并将其放置在与 MyJavaBean.java 相同的包下。
在 MyJavaBean-conversion.properties 中,我将 key 更改为:
rectangle=com.journaldev.struts2.typeconverters.RectangleTypeConverter
然后我构建了 .war 文件并在 Tomcat 7 下运行您的示例。矩形转换工作正常。
我认为您永远无法使用 http://struts.apache.org/release/2.3.x/docs/type-conversion.html 中解释的方法。 (请参阅标题为“将类型转换器应用于操作”的部分)当您的 Action 类使用 ModelDriven 时。如果您发现以前的 Struts 2 版本确实有效,请告诉我。
布鲁斯·菲利普斯
关于java - Struts 2 类型转换器问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18993091/