簡體   English   中英

在視圖之間傳輸數據

[英]Trasfering data between Views

我正在嘗試將登錄詳細信息從登錄視圖傳遞到下一個視圖。 我找到了一個教程,並按照它進行了學習,但是我陷入了困境。 我能夠將登錄數據存儲在服務器端,但無法檢索它。

服務器端代碼為:

private ViewData viewData = new ViewData();

public ViewData setViewData(String accountId, String accountLevel, String ymId) {

    System.out.println("accountId = " + accountId);
    ViewData viewData = new ViewData();

    viewData.setaccountId(accountId);
    viewData.setaccountLevel(accountLevel);
    viewData.setymId(ymId);

    System.out.println("setViewData viewData.getaccountId() = " + viewData.getaccountId());

    return null;
}

public ViewData getViewData(String accountId, String accountLevel, String ymId) {

    //viewData = new ViewData(viewData.getaccountId(), viewData.getaccountLevel(), viewData.getymId());
    viewData = new ViewData();

    System.out.println("getViewData viewData.getaccountId() = " + viewData.getaccountId());
    System.out.println("getViewData accountId = " + accountId);

    return viewData;

}

public ViewData getViewData() {
    return viewData;
}

當我調用setViewData時,兩個System.out.println顯示7和7是正確的。

當我調用getViewData時,兩個System.out.println顯示為null,並且null返回到調用視圖。

getViewData的調用者:

verticalPanel.addAttachHandler(new Handler() {
        public void onAttachOrDetach(AttachEvent event) {
            //On load of page get the Account Level and ID.
            Window.alert("SelectPersonView vertical panel attached.");
            AsyncCallback<ViewData> callback = new ViewDataHandler<ViewData>(SelectPersonView.this);
            rpc.getViewData(null, null, null, callback);
        }
    });

class ViewDataHandler<T> implements AsyncCallback<ViewData> {

    SelectPersonView view;

    public ViewDataHandler(SelectPersonView view) {
        this.view = view;
    }

    public void onFailure(Throwable ex) {
        Window.alert("RPC call failed.");
    }
    public void onSuccess(ViewData result) {
        //Store the view data
        ViewData viewData = result;
        accountId = viewData.getaccountId();
        accountLevel = viewData.getaccountLevel();
        ymId = viewData.getymId();

        Window.alert("accountId = " + accountId + " accountLevel = " + accountLevel + " ymId = " + ymId);
    }
}

接口的異步版本為:

//View Data
public void setViewData(String accountId, String accountLevel, String ymId, AsyncCallback<ViewData> callback);
public void getViewData(String accountId, String accountLevel, String ymId, AsyncCallback<ViewData> callback);

表示數據模型的類為:

package org.AwardTracker.client;

import java.io.Serializable;

public class ViewData implements Serializable {
private static final long serialVersionUID = 1L;

private String accountId;
private String accountLevel;
private String ymId;

//@SuppressWarnings("unused")
public ViewData() {
    //just here because GWT wants it.
}
//  public ViewData(String accountId, String accountLevel, String ymId) {
//      this.accountId = accountId;
//      this.accountLevel = accountLevel;
//      this.ymId = ymId;
//  }

public String getaccountId() {
    return accountId;
}
public void setaccountId(String accountId) {
    this.accountId = accountId;
}

public String getaccountLevel() {
    return accountLevel;
}
public void setaccountLevel(String accountLevel) {
    this.accountLevel = accountLevel;
}

public String getymId() {
    return ymId;
}
public void setymId(String ymId) {
    this.ymId = ymId;
}

}

非常感謝我的朋友杜克(Duc)在許多人失敗之后成功了(當然包括我在內),他成功了。 答案是:

在客戶端調用以保存數據是:

AsyncCallback<ViewData> callback = new ViewDataStoreHandler<ViewData>();
                    rpc.setViewData(accountId, accountLevel, youthMemberID, callback);

服務器端代碼為:

private ViewData viewData = null;

public ViewData setViewData(String accountId, String accountLevel, String ymId) {

    viewData = new ViewData();

    viewData.setaccountId(accountId);
    viewData.setaccountLevel(accountLevel);
    viewData.setymId(ymId);

    return viewData;
}

調用客戶端獲取數據是:

AsyncCallback回調=新的ViewDataHandler(BoomerangView.this); rpc.getViewData(callback);

服務器端代碼為:

public ViewData getViewData() {
    return viewData;
}

我衷心希望這對其他人有幫助,因為我已經花了很長時間了,現在已經解決了所有主要障礙,以完成此Scouts項目。 我要感謝所有在整個過程中為我提供幫助的人。

最好的祝福,

格林

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM