【问题标题】:GWT RequestFactory returns a null objectGWT RequestFactory 返回一个空对象
【发布时间】:2011-09-19 15:46:36
【问题描述】:

我正在尝试使用 GWTs RequestFactory 来(目前)做一些非常简单的事情并返回一个对象列表,每个对象都包含一些数据和另一个对象。我似乎无法得到我的另一个对象——相反,我总是得到空值。

我的代码看起来像这样......

我有一些 UserMessage 对象,每个都包含一个 Message 对象。

用户消息

@Entity
public class UserMessage implements Serializable {

  private static final long serialVersionUID = 1L;

  @Id
  @GeneratedValue
  private Long id;

  @Version
  private Integer version = 0;

  @ManyToOne
  @JoinColumn(name = "messageId")
  private Message message;

  private String user;

  private int priority;

  private boolean read;

  private Date expiry;

  private boolean sent;

  ... getter/setters etc

留言

  @Entity(name = "UUMessage")
  public class Message implements Serializable {

  private static final long serialVersionUID = 1L;

  @Id
  @GeneratedValue
  private Long id;

  @Version
  private Integer version = 0;

  private String title;

  private String mimeType;

  private String message;

  private Date received;

  private String fromUser;

  public Message() {

  }

  ... getter/setters etc

每个都有自己的代理类

UserMessageProxy

@ProxyFor(value = UserMessage.class, locator = UserMessageLocator.class)
public interface UserMessageProxy extends EntityProxy {

  Long getId();

  void setId(Long id);

  MessageProxy getMessage();

  void setMessage(MessageProxy message);

  String getUser();
}

消息代理

@ProxyFor(value = Message.class, locator = MessageLocator.class)
public interface MessageProxy extends EntityProxy {

Long getId();

void setId(Long id);

String getTitle();

void setTitle(String title);

}

我有一个工厂和一个上下文

@Service(value = CentralNotificationService.class, locator = CentralNotificationServiceLocator.class)
public interface CnsRequestContext extends RequestContext {

  Request<List<UserMessageProxy>> getMessagesForUser(String user, int start, int length);

}

当我在客户端调用 getMessagesForUser(...) 时,我的服务器端服务代码被调用,数据库中的条目被检索,我得到一个返回给客户端的 UserMessageProxy 列表。不幸的是,在其中任何一个上调用 getMessage() 都会返回 null,我不知道为什么。

我没有收到任何错误或警告。在服务器端,当 RequestFactory 代码调用我的服务类时,我可以“看到” UserMessage 确实包含 Message 对象。

为什么我的对象是空的?有没有我不满足的条件?

GWT 2.4 BTW(但 2.3 也有问题)

【问题讨论】:

    标签: java gwt requestfactory


    【解决方案1】:

    您的代码可能缺少.with("message")

    查询服务器时,RequestFactory 不会自动填充对象图中的关系。为此,请在请求上使用 with() 方法并将相关属性名称指定为 String
    […]
    还需要使用 with() 方法来检索具有扩展 ValueProxy 类型的任何属性。 with() 方法接受多个 String 参数,因此您可以一次指定多个属性名称。要指定嵌套属性,请使用点表示法。

    ——来源:http://code.google.com/webtoolkit/doc/latest/DevGuideRequestFactory.html#relationships

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-03
      • 1970-01-01
      • 2021-03-31
      • 2014-07-15
      • 2018-08-25
      • 2020-10-31
      相关资源
      最近更新 更多