我正在尝试使用属性文件进行自定义类型转换以进行操作。
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类并行,转换器配置为:
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
答案 0 :(得分:0)
您需要在类路径中创建xwork-conversion.properties
。在该文件中,您将Rectangle
类的完整类名映射到Converter
类。请按照以下网址中的示例进行操作。
查看this和this个帖子。他们将帮助您解决问题。
答案 1 :(得分:0)
bean.rectangle=struts2.typeconverters.RectangleTypeConverter
- 这是错误的
您必须使用正确的类名和fullpath,而不仅仅是属性名称。
mypackage.Rectangle=struts2.typeconverters.RectangleTypeConverter
- 希望你真的有一个名为struts2的软件包,虽然我会严格避免这样的软件包名称。
答案 2 :(得分:0)
如果您的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下运行了您的示例。矩形转换工作正常。
当您的Action类使用ModelDriven时,我认为您不能使用http://struts.apache.org/release/2.3.x/docs/type-conversion.html中解释的方法(请参阅“将类型转换器应用于动作”一节)。如果您找到之前的Struts 2版本,请告诉我。
布鲁斯菲利普斯