无法在struts2中的modelDreiven拦截器中将字符串设置为Int

时间:2014-06-13 02:54:20

标签: java jsp struts2 ognl model-driven

嗨这是我的问题

我的jsp

中有select个标记
  <select list="#{'1':cat,'2':'dog','3':Monkey}" name="animalId" />

在我的动作类中,我正在使用modelDriven拦截器,如下面的

 public class ActionClass extends AcionSuport implements ModelDriven<BeanClass>
  {

     BeanClass modelName = new BeanClass();
     public BeanClass getModel()
     {

        return modelName;
        }
     }

这是我的bean类

   public class BeanClass
  {
    private Integer animalId;
       //There is getters and setters for animalId;

       }

我的问题是什么..当我想在我的动作类中获取下拉框的数据时,它给我null值。

Ofcourse I am using `modelDriven` interceptor in my `struts.xml`

但是,当我将animalId转换为String时,BeanClass的工作正常。

根据文档..类型转换必须自动完成...但我不能在控制台中得到任何错误...

Plesae有人帮助我..

1 个答案:

答案 0 :(得分:0)

如果要在value属性中预选一个选项,模型中的字段类型应与下拉列表中的键类型和值类型相对应。如果键和值具有相同类型的对象,则它可以相互比较。如果你有一个string或char类型的键和类型Integer的相应值,那么OGNL将尝试获取/设置与键相同类型的属性。在您的情况下,使用带字符串/ char键类型的OGNL实例化地图。这就是为什么您的房产没有设置的原因,如果您的房产类型为String,则设置它。您可以按照创建Integer键和String值的方式更改下拉列表。

<select list="#{1:'cat',2:'dog',3:'Monkey'}" name="animalId" />