2011-09-19 115 views
1

我想使用GWT的RequestFactory(此刻)做一些非常簡單的事情,並返回一個對象列表,每個對象都包含一些數據和另一個對象。我似乎無法得到我的其他對象 - 相反,我總是得到空。GWT RequestFactory返回空對象

我的代碼看起來是這樣的......

我有一些UserMessage對象,每個包括一個Message對象。

UserMessage

@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(); 
} 

MessageProxy

@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的問題)

回答

6

您的代碼可能缺少一個.with("message")

當查詢服務器,RequestFactory不會自動填充對象圖中的關係。爲此,請在請求上使用with()方法,並將相關屬性名稱指定爲字符串
[...]
還需要使用with()方法來檢索任何帶有擴展ValueProxy類型的屬性。 with()方法接受多個String參數,因此您可以一次指定多個屬性名稱。要指定嵌套屬性,請使用點符號。

- 來源:http://code.google.com/webtoolkit/doc/latest/DevGuideRequestFactory.html#relationships

+0

完全正確。謝謝。 – pauli