我有一个带有条目列表的xp:repeat控件。对于每个条目,我都定义了一个按钮,用于从数据库中删除后端文档:
<xp:button value="Delete" id="button2">
<i class="fa fa-trash"> </i>
<xp:eventHandler event="onclick" submit="true" refreshMode="complete">
<xp:this.action>
<![CDATA[#{javascript:employeeBean.remove(obj.unid)}]]>
</xp:this.action>
</xp:eventHandler>
</xp:button>
虽然我注意到一个奇怪的行为,但这种方法很好:当我刷新页面(浏览器中的F5)时,我收到一条消息:确认表单重新提交。如果我选择确认,则从列表中删除另一个条目。
只要按F5并刷新页面,此过程就会继续。我怎么能阻止这个?
删除方法不是火箭科学:
public void remove(String id) {
try {
Document doc;
openDatabaseAndView();
if (id != null) {
doc = view.getDocumentByKey(id, true);
} else {
doc = null;
}
if (doc != null) {
doc.remove(true);
} else {
//message to user
}
closeDatabaseAndView();
} catch (NotesException e) {
e.printStackTrace();
}
}
答案 0 :(得分:0)
我将重复控件放在面板中,并从“删除”按钮...
在此面板上设置部分刷新答案 1 :(得分:0)
带有表单重新提示的F5实际上重复了再次执行按钮点击的最后一个请求(删除),并再次...
看看“POST / GET”模式:https://stackoverflow.com/a/18821569/206265