繁体   English   中英

Struts 2型转换器问题

[英]Struts 2 type converter issue

我正在尝试使用自定义类型转换与属性文件进行操作。

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文件与action类并行转换为config:

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

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

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

您必须使用正确的类名和fullpath,而不仅仅是属性名称。

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

如果您的Action类正在使用Model Driven,那么您需要对自定义类型转换器使用此方法:

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下运行了您的示例。矩形转换正常工作。

我不认为您可以使用http://struts.apache.org/release/2.3.x/docs/type-conversion.html中解释的方法(请参阅标题为将类型转换器应用于操作的部分) Action类正在使用ModelDriven。 如果您找到以前的Struts 2版本,那么确实可以使用。

布鲁斯菲利普斯

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM