我是 GWT 的新手。我正在编写一个简单的 GWT 程序,其中有一个组合框( 的一个实例ValueListBox
),其中列出了从 1 到 12 的数字,代表一年中的月份。我的要求是将当前月份设置为屏幕加载的组合。如果我从客户端获取当前月份的值并将其设置为组合,它工作正常。但是,如果我使用 RPC 从服务器端获取当前月份的值并将其设置为组合,则它不起作用。它总是设置变量的初始值。(currentMonth = 0 )
就我而言,无论从服务器返回的值如何,它都是零。任何人都可以帮我解决这个问题吗?
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.GWT;
import com.google.gwt.text.shared.Renderer;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.ValueListBox;
public class Sample implements EntryPoint {
private int currentMonth = 0;
private final MyServiceAsync service = GWT.create(MyService.class);
public void onModuleLoad() {
setCurrentMonth();
final ValueListBox<Integer> monthCombo = new ValueListBox<Integer>(new Renderer<Integer>() {
@Override
public String render(Integer object) {
return String.valueOf(object);
}
@Override
public void render(Integer object, Appendable appendable) throws IOException {
if (object != null) {
String value = render(object);
appendable.append(value);
}
}
});
monthCombo.setValue(currentMonth);
monthCombo.setAcceptableValues(getMonthList());
RootPanel rootPanel = RootPanel.get();
rootPanel.add(monthCombo);
}
private List<Integer> getMonthList() {
List<Integer> list = new ArrayList<Integer>();
for (int i = 1; i <= 12; i++) {
list.add(i);
}
return list;
}
private void setCurrentMonth() {
service.getCurrentMonth(new AsyncCallback<Integer>() {
@Override
public void onSuccess(Integer month) {
currentMonth = month;
}
@Override
public void onFailure(Throwable caught) {
}
});
}
}