将restygwt从1.3更新到2.2.3会破坏现有代码

时间:2018-05-30 07:52:56

标签: java gwt

我在我的网络应用程序中将restygwt依赖从版本1.3更新到2.2.3。此升级破坏了我现有的代码。我在编译GWT Repository接口时遇到错误:[ERROR] Neither public argument id nor public getter getId found!。 我在存储库的以下函数中发现错误的原因是@Attribute注释。

@PUT
@Path("{id}")
void update(@PathParam("id") @Attribute("id") T object, MethodCallback<Void> callback);

object是泛型类型T的对象,它是从其他超类DTO扩展的DTO。 超类DTO具有公共方法getId()和私有属性id。即使超类DTO中存在公共方法,我也不知道为什么编译器会出错。

注:

  1. 相同的代码正在使用restygwt版本1.3。
  2. 当我在子类DTO中添加@Override public getId()方法时,错误消失了。 (为什么会这样?超类已经有了相同的方法,那么为什么编译器无法找到它?)
  3. @Attribute("id")更改为@Attribute("getId()")也无效。
  4. =============================================== ====================

        public abstract class AbstractDto implements Serializable {
    
        private static final long serialVersionUID = 1L;
    
        public String id;
    
        public String getId() {
            return id;
        }
    
        public void setId(String id) {
            this.id = id;
        }
    
        @Override
        public int hashCode() {
            final int prime = 31;
            int result = 1;
            result = prime * result + ((id == null) ? 0 : id.hashCode());
            return result;
        }
        ......
        ......
        ......
        }
    

    是超类DTO,数据(即object函数的update()参数)是由超类扩展的类。

1 个答案:

答案 0 :(得分:0)

尝试在超类上使用df = df2.merge(df1, left_on=['access_date','user_id'], right_on=['day','u'])[df1.columns] print (df) day u a 0 2018-03-01 10405594 suggestion - 注释。

将这样的内容添加到您的超级课程中:

JsonSubTypes

并将此注释添加到每个子类:

@JsonSubTypes({ 
     @JsonSubTypes.Type(value = YourSubClass01.class, name = "YourSubClass01"),
     @JsonSubTypes.Type(value = YourSubClass02.class, name = "YourSubClass02")
})

此处有更多信息:https://resty-gwt.github.io/documentation/restygwt-user-guide.html

希望有所帮助。