我正在使用UploadItem,RadioGroupItem和其他一些小部件。 RadioButton有onChangeHandler,它将决定所有其他组件需要显示的内容。我使用UploadItem上传了一些文件。然后我改变了单选按钮的选择。在更改单选按钮时,所需的小部件正在正确显示,但我使用UploadItem选择的任何文件都将消失。正在显示Fresh UploadItem小部件。换句话说,页面正在刷新。 我的要求是每当我更改单选按钮选项时,必须显示所需的小部件以及我使用UploadItem选择的任何文件应该保持相同。 我的代码是这样的:
UploadItem upload = new UploadItem();
RadioGroupItem radioGroup = new RadioGroupItem();
HashMap map = new HashMap();
map.put("option1","option1");
map.put("option2","option2");
radioGroup.setValueMap(map);
TextItem textbox = new TextItem();
radioGroup.addChangeHandler(new ChangeHandler(){
public void onChanged(ChangedEvent event) {
String radioValue =((String)event.getValue());
if(radioValue.equalsIgnoreCase("option2")){
textbox.show();
}else{
textbox.hide();
}
}
});
使用dynamicForm.setFields(所有创建的小部件)将所有创建的小部件添加到DynamicForm对象 更改单选按钮应隐藏并显示textBox。但是,当这个页面正在刷新时,我们使用UploadItem选择的任何文件都会丢失。
答案 0 :(得分:2)
根据FormItem类的hide()和show()的文档,调用任何这些方法都会导致重绘DynamicForm。
所以它可能会导致你遇到的问题。
为了解决这个问题,我建议你将UploadItem放在一个单独的DynamicForm中。
答案 1 :(得分:0)
在广播中点击一个事件选择更改为
radioButton.addListener(Events.Change, new Listener<BaseEvent>() {
@Override
public void handleEvent(BaseEvent be) {
if(radioButton.getValue()){
//fire an event here for ur widget
}
}
});