我希望在提交表单时显示确认对话框以继续或取消保存操作。我有一个带有保存按钮的表单,它调用一个动作方法来保存表单中的数据。 单击“保存”按钮时,将在表单数据保留之前在服务器端重新加载文件。来自文件的数据将被连接到表单数据中,然后将保留表单数据。我需要表单中的一些值来定义将被加载的文件。到目前为止没有问题。抛出FileNotFoundException或找不到文件中的必要数据时,我想显示一个确认对话框,以继续或取消导致消息的保存操作。
有人有一些例子或任何想法如何处理这个?我需要使用a4j吗?谢谢。 我使用的是Rifchfaces 3.3.3和Seamframework 2.2。
答案 0 :(得分:1)
首先,我必须更正我的问题标题。 不继续“处理提交的表单数据”,但表单数据将在经过一些验证后提交。
现在的解决方案。
例如,我的表格中有以下内容:
一些档案
a4j:commandButton reRender字段并执行doSomeStuff()操作
一个隐藏的h:或a4j:commandButton来提交表单。
1-用户点击'假'提交按钮,这是一个a4j:commandButtton,
2-Ajax调用reRender属性中的更新字段
3-之后,使用重新渲染的字段值执行方法doSomeStuff()
4-最后,Javascript将运行以提交表单。
形式:
<h:form id="myForm">
<h:inputText id="name" value="#{personHome.person.name}"/>
<h:inputText id="surname" value="#{personHome.person.surname}"/>
<a:commandButton value="Save" reRender="name, surname"
action="#{personHome.doSomeStuff()}"
oncomplete="return checkMessage('#{personHome.success}')"
id="a4jSave" />
<h:commandButton id="save" value="Save"
action="#{personHome.persist}"
style="visibility:hidden" />
</h:form>
JavaScript的:
<script language="javascript">
function checkMessage(success) {
if(success =='false')
{
return confirm('Do you want to submit this form?') ? submitForm() : false;
} else {
submitForm ();
}
}
function submitForm() {
document.getElementById('myForm:save').click();
return false;
}
</script>
答案 1 :(得分:0)
是的,你需要使用a4j。
尝试类似的东西(未测试,但遵循算法):
<a4j:commandButton onclick="if(messageHasToBeDisplayed){Richfaces.showModalPanel('modalId');}else{doSomeStuff();}" />
...
<a4j:jsFunction name="doSomeStuff" action="#{controller.doSomeStuff}" reRender="..."/>
这将向您展示如何在必要时显示模式面板。 没有更多代码,我无法帮助你,但我认为这应该对你有帮助......