我正在嘗試創建一個動作,在該動作中服務器需要通過線路向客戶端通過GWTP動作響應對象的數組列表。如何通過GWTP動作通過線路傳輸對象的數組列表
Category類
package com.business.share;
import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.Id;
public class Category implements Serializable{
Long id;
protected String name;
protected String description;
protected boolean status;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public boolean getStatus() {
return status;
}
public void setStatus(boolean status) {
this.status = status;
}
}
GetCategories類
package com.business.client.action;
import java.util.ArrayList;
import com.gwtplatform.dispatch.shared.ActionImpl;
import com.business.client.action.GetCategoriesResult;
import com.business.share.Category;
public class GetCategories extends ActionImpl<GetCategoriesResult> {
private ArrayList<Category> categories;
@SuppressWarnings("unused")
public GetCategories() {
// For serialization only
}
public GetCategories(ArrayList<Category> categories) {
this.categories = categories;
}
public ArrayList<Category> getCategories() {
return categories;
}
}
GetCategoriesResult類
package com.business.client.action;
import java.util.ArrayList;
import com.gwtplatform.dispatch.shared.Result;
import com.business.share.Category;
public class GetCategoriesResult implements Result {
private ArrayList<Category> categories;
@SuppressWarnings("unused")
private GetCategoriesResult() {
// For serialization only
}
public GetCategoriesResult(ArrayList<Category> categories) {
this.categories = categories;
}
public ArrayList<Category> getCategories() {
return categories;
}
}
GetCategoriesActionHandler類
package com.business.server.handler;
import java.util.ArrayList;
import com.gwtplatform.dispatch.server.actionhandler.ActionHandler;
import com.business.client.action.GetCategories;
import com.business.client.action.GetCategoriesResult;
import com.business.share.Category;
import com.google.inject.Inject;
import com.googlecode.objectify.Objectify;
import com.googlecode.objectify.ObjectifyService;
import com.googlecode.objectify.Query;
import com.gwtplatform.dispatch.server.ExecutionContext;
import com.gwtplatform.dispatch.shared.ActionException;
public class GetCategoriesActionHandler implements
ActionHandler<GetCategories, GetCategoriesResult> {
@Inject
public GetCategoriesActionHandler() {
}
@Override
public GetCategoriesResult execute(GetCategories action,
ExecutionContext context) throws ActionException {
ArrayList<Category> categories = new ArrayList<Category>();
// dummy data
Category cat1 = new Category();
cat1.setName("cat1");
cat1.setDescription("cat1 desc");
cat1.setStatus(true);
Category cat2 = new Category();
cat1.setName("cat2");
cat1.setDescription("cat2 desc");
cat1.setStatus(false);
categories.add(cat1);
categories.add(cat2);
return new GetCategoriesResult(categories);
}
@Override
public void undo(GetCategories action, GetCategoriesResult result,
ExecutionContext context) throws ActionException {
}
@Override
public Class<GetCategories> getActionType() {
return GetCategories.class;
}
}
這是CategoryPresenter中的一段代碼,它將異步發送到服務器。
@Override
protected void onReset() {
super.onReset();
GetCategories getCategoriesAction = new GetCategories();
dispatchAsync.execute(getCategoriesAction, getCategoriesCallback);
}
private final AsyncCallback<GetCategoriesResult> getCategoriesCallback =
new AsyncCallback<GetCategoriesResult>() {
@Override
public void onFailure(Throwable caught) {
}
@Override
public void onSuccess(GetCategoriesResult result) {
getView().getCategoryListBox().clear();
ArrayList<Category> categories = result.getCategories();
for(Category category : categories) {
getView().getCategoryListBox().addItem(category.getName());
}
}
};
我不知道這段代碼有什麼問題,但GWT編譯器總是給出這樣的錯誤。
編譯模塊com.business.Business 驗證新編譯單位 忽略3個單位在第一遍編譯錯誤。 使用-strict編譯或使用-logLevel設置爲TRACE或DEBUG以查看所有錯誤。 查找入口點類別 [錯誤]'文件中的錯誤:/。blah..blah..blah ../ businessapp/src/com/business/client/presenter/CategoryPresenter.java' [錯誤]第75行:否源代碼可用於com.business.share.Category類型;你忘了繼承一個必需的模塊嗎? [錯誤]'file:/。blah..blah..blah ../ businessapp/src/com/business/client/action/GetCategoriesResult.java'中的錯誤' [錯誤]第11行:沒有源代碼可用於鍵入com.business.share.Category;你忘了繼承一個必需的模塊嗎? [錯誤]無法找到類型'com.business.client.Business' [錯誤]提示:以前的編譯器錯誤可能導致此類型不可用 [錯誤]提示:檢查模塊的繼承鏈;它可能不是繼承所需的模塊或模塊可能沒有正確添加其源路徑條目
以下此錯誤消息,這意味着,com.business.share.Category未找到,但此文件是物理已經存儲在該軟件包中。我不明白爲什麼GWT找不到它。我注意到任何我稱之爲Category類的東西,它總是帶來這個錯誤。 有人知道發生了什麼?編輯] 問題已解決。 在我Business.gwt.xml,我有
<source path='shared'/>
但我的股票包com.business.share(不含d) 我只是重新命名共享包名稱共享。
感謝您的回覆,但仍然沒有運氣。 – varmansvn
檢查'Category'的包名稱。它應該'共享'而不是共享' – Sydney
任何人都解決了這個問題? – Bennet