我有2个输入。当我按下按钮(AjaxFallbackButton)时,这些输入将保存到数据库中。
如果其中一个输入大于10,当我按下按钮时,我想显示一个模态面板,询问用户是否确定他的选项。但模态组件没有出现。有什么想法吗?
@Override
public void onSubmit(AjaxRequestTarget target) {
if (input < 10) { //save to database
} else {
AskingDialogPanel panel = new AskingDialogPanel("content",
new ResourceModel("asking.title"),
new ResourceModel("asking.message")) {
@Override
public void onOkClick(AjaxRequestTarget target) {
super.onOkClick(target);
//save to database
modalWindow.close(target);
}
@Override
public void onCancelClick(AjaxRequestTarget target) {
super.onCancelClick(target);
modalWindow.close(target);
}
};
panel.setOutputMarkupId(true);
target.addComponent(panel);
modalWindow.setContent(panel);
modalWindow.show(target);
}
答案 0 :(得分:0)
查看AjaxRequestTarget的文档。
需要标记的组件 更新应添加到此目标 通过 AjaxRequestTarget#addComponent(组件) 方法。它的身体将被渲染 当目标时添加到信封 处理,并刷新 当ajax响应时,客户端 接收。
我不确定我是否正确记住了这个问题(我之前无法实现正确的刷新行为),但我相信您只能addComponent
以前添加到页面但未呈现的组件/看不见。这些将不会更新和/或重新评估其可见性。
但我可能是错的..如果你用AskingDialogPanel替换普通的Label,上面的工作是否有效? (只是为了证实我说的是错误的结局;))