2

我正在尝试将自定义类型转换与属性文件一起使用。

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;
}
}

豆类是:

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

我尝试将密钥作为 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

4

3 回答 3

0

您需要xwork-conversion.properties在类路径中创建。在该文件中,您将类的完整类名映射RectangleConverter该类。按照以下网址中的示例进行操作。检查这个这个帖子。他们将帮助您解决问题。

于 2013-09-25T08:06:42.593 回答
0

bean.rectangle=struts2.typeconverters.RectangleTypeConverter- 这是错误的

您必须使用正确的类名和完整路径,而不仅仅是属性名。

mypackage.Rectangle=struts2.typeconverters.RectangleTypeConverter- 希望你真的有一个名为 struts2 的包,尽管我会严格避免使用这样的包名。

于 2013-09-25T21:36:24.797 回答
0

如果您的 Action 类使用模型驱动,那么您需要遵循此方法来自定义类型转换器:

http://struts.apache.org/release/2.3.x/docs/type-conversion.html(请参阅标题为将类型转换器应用于 bean 或模型的部分)。

在您的示例中,我将转换属性文件名更改为 MyJavaBean-conversion.properties 并将其放在与 MyJavaBean.java 相同的包下。

在 MyJavaBean-conversion.properties 中,我将密钥更改为:

      rectangle=com.journaldev.struts2.typeconverters.RectangleTypeConverter 

然后,我构建了 .war 文件并在 Tomcat 7 下运行了您的示例。矩形转换工作正常。

您_动作类正在使用 ModelDriven。如果你找到了一个以前的 Struts 2 版本,它确实有效,请告诉我。

布鲁斯·菲利普斯

于 2013-11-29T14:06:55.820 回答