私はGWTを初めて使用します。私は、ValueListBox
1年の月を表す1から12までの数字をリストするコンボボックス(のインスタンス)を持っている単純なGWTプログラムを書いています。私の要件は、現在の月を画面ロードのコンボに設定することです。クライアント側から今月の値を取得してコンボに設定すれば問題なく動作します。ただし、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) {
}
});
}
}