首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • struts2.0问题 [已结贴,结贴人:zr_dixuexiongying]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-22 10:44:36 楼主
    package org.apache.struts2.showcase;

    public class UITagExample extends ActionSupport implements Validateable
    {
      private static final long serialVersionUID =1L;
     
      String name;
      Date birthday;
      String bio;
      String favoriteColor;
      List friends;
      boolean legalAge;
      String state;
      String region;
      File picture;
      String pictureContentType;
      String pictureFileName;
      String favouriteLanguage;
      String favouriteVehicalType = "MotorcycleKey";
      String favouriteVehicalSpecific = "YamahaKey";
      List leftSideCartoonCharacters;
      List rightSideCartoonCharacters;
      List favouriteLanguages = new ArrayList();
      List vehicalTypeList = new ArrayList();
      Map vehicalSpecificMap = new HashMap();
      String thoughts;
      public UITagExample()
      {
      favouriteLanguages.add(new Language("EnglishKey","English Language"));
      favouriteLanguages.add(new Language("Frenchkey","French Language"));
      favouriteLanguages.add(new Language("SpanishKey","Spanish Language"));
     
      VehicalType car = new VehicalType("CarKey","Car");
      VehicalType motorcycle = new VehicalType("MotorcycleKey","Motorcycle");
      vehicalTypeList.add(car);
      vehicalTypeList.add(motorcycle);
     
      List cars = new ArrayList();
      cars.add(new VehicalSpecific("MercedesKey","Mercedes"));
      cars.add(new VehicalSpecific("HondaKey","Honda"));
      cars.add(new VehicalSpecific("FordKey","Ford"));
     
      List motorcycles = new ArrayList();
      motorcycles.add(new VehicalSpecific("SuzukiKey","Suzuki"));
      motorcycles.add(new VehicalSpecific("YamahaKey","Yamahs"));
     
      vehicalSpecificMap.put(car, cars);
      vehicalSpecificMap.put(motorcycle, motorcycles);
      }

    public String getFavouriteVehicalType() {
    return favouriteVehicalType;
    }

    public void setFavouriteVehicalType(String favouriteVehicalType) {
    this.favouriteVehicalType = favouriteVehicalType;
    }

    public String getFavouriteVehicalSpecific() {
    return favouriteVehicalSpecific;
    }

    public void setFavouriteVehicalSpecific(String favouriteVehicalSpecific) {
    this.favouriteVehicalSpecific = favouriteVehicalSpecific;
    }

    public List getLeftSideCartoonCharacters() {
    return leftSideCartoonCharacters;
    }

    public void setLeftSideCartoonCharacters(List leftSideCartoonCharacters) {
    this.leftSideCartoonCharacters = leftSideCartoonCharacters;
    }

    public List getRightSideCartoonCharacters() {
    return rightSideCartoonCharacters;
    }

    public void setRightSideCartoonCharacters(List rightSideCartoonCharacters) {
    this.rightSideCartoonCharacters = rightSideCartoonCharacters;
    }

    public List getVehicalTypeList() {
    return vehicalTypeList;
    }
     
      public List getVehicalSpecificList()
      {
      OgnlValueStack stack = ServletActionContext.getValueStack(      //本行报错
      ServletActionContext.getRequest());
     
      Object vehicalType = stack.findValue("top");
     
      if(vehicalType != null && vehicalType instanceof VehicalType)
      {
      List l = (List)vehicalSpecificMap.get(vehicalType);
        return l;
     
      }
      return Collections.EMPTY_LIST;
      }
     
      public List getFavouriteLanguages()
      {
      return favouriteLanguages;
      }
     
      public String execute() throws Exception
      {
      return SUCCESS;
      }
     
      public String doSubmit()
      {
      return SUCCESS;
      }
     
      public static class Language
      {
      String description;
      String key;
     
      public Language(String key,String description)
      {
      this.key = key;
      this.description = description;
      }
     
      public String getKey()
      {
      return key;
      }
     
      public String getDescription()
      {
      return description;
      }
      }
     
      public static class VehicalType
      {
      String key;
      String description;
     
      public VehicalType(String key,String description)
      {
      this.key = key;
      this.description = description;
      }
     
      public String getKey()
      {
      return this.key;
      }
     
      public String getDescription()
      {
      return this.description;
      }
     
      public boolean equals(Object obj)
      {
      if(!(obj instanceof VehicalType))
      {
      return false;
      }
      else
      {
      return key.equals(((VehicalType)obj).getKey());
      }
      }
     
      public int hashCode()
      {
      return key.hashCode();
      }
      }
     
        public static class VehicalSpecific
        {
        String key;
        String description;
       
        public VehicalSpecific(String key,String description)
        {
        this.key = key;
        this.description = description;
        }
       
        public String getKey()
        {
        return this.key;
        }
       
        public String getDescription()
        {
        return this.description;
        }
       
        public boolean equals(Object obj)
        {
        if(!(obj instanceof VehicalSpecific))
        {
        return false;
        }
        else
        {
        return key.equals(((VehicalSpecific)obj).getKey());
        }
        }
       
        public int hashCode()
        {
        return key.hashCode();
        }
        }
    }


    报错提示为:

      Severity and Description Path Resource Location Creation Time Id
    Type mismatch: cannot convert from ValueStack to OgnlValueStack TestStruts2/src/org/apache/struts2/showcase UITagExample.java line 107 

    鼠标指着报错的地方提示:
      Multiple markers at this line
        - Line breakpoint:UITagExample [line:107] - setFavouriteVehicalType(String)
        - Type mismatch:cannot convert from ValueStack to OgnlValueStack

    107行也就是:OgnlValueStack stack = ServletActionContext.getValueStack(       
      ServletActionContext.getRequest());

    可是我的代码全部是照着电子资料写的啊:不明白什么错误,说不能转换,不知道怎么改

    资料代码如下:
    与大家分享一个来Struts 2.0 Show Case一个例子。
    package org.apache.struts2.showcase;
    public class UITagExample extends ActionSupport implements Validateable {
       
     
        public List getVehicalSpecificList() {
            OgnlValueStack stack = ServletActionContext.getValueStack(ServletActionContext.getRequest());
            Object vehicalType = stack.findValue("top");
            if (vehicalType != null && vehicalType instanceof VehicalType) {
                List l = (List) vehicalSpecificMap.get(vehicalType);
                return l;
            }
            return Collections.EMPTY_LIST;
        }
    }


    50  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-22 10:44:391楼 得分:0
    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主截止到2008-06-22 10:44:25的汇总数据:
    注册日期:2007-5-2
    上次登录:2008-6-22
    发帖数:93                发帖分:2110             
    结贴数:90                结贴分:2020             
    结贴率:96.77%        结分率:95.73%       
    值得尊敬
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-22 12:03:292楼 得分:20
    那你就把
    OgnlValueStack stack = ServletActionContext.getValueStack(ServletActionContext.getRequest());
    换成
    ValueStack stack = ServletActionContext.getValueStack(ServletActionContext.getRequest());
    试试看
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-22 23:51:433楼 得分:10
    Type mismatch: cannot convert from ValueStack to OgnlValueStack

    类型不符合报错。按照楼上直接使用ValueStack试下。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-23 08:43:044楼 得分:20
    OgnlValueStack stack = (OgnlValueStack)ServletActionContext.getValueStack(      //本行报错
      ServletActionContext.getRequest());

    如果楼主确定可以转换可以加强之转换试试。
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved