[英]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.