我想显示一个确认对话框,以便在提交表单时继续或取消保存操作。我有一个带有保存按钮的表单,它调用一个操作方法来保存表单中的数据。当单击save按钮时,在持久化表单数据之前,将在服务器端读取一个文件。文件中的数据将被连接到表单数据中,然后表单数据将被持久化。我需要表单中的一些值来定义将读取哪个文件。到目前为止还没有问题。当FileNotFoundException抛出或从文件中找不到必要的数据时,我想显示一个确认对话框,以继续或取消保存操作,并显示导致的消息。
有没有人有一些例子或任何想法如何处理这个?我需要使用a4j吗?谢谢。我使用的是Rifchfaces 3.3.3和Seamframework 2.2.首先我必须纠正我的问题标题。不是正在"处理提交的表单数据",而是表单数据将在一些验证后提交。
现在解决方案。
例如,在我的表单中有如下内容:
- 一些filelds
and a4j:commandButton来呈现字段并执行doSomeStuff()动作
一个隐藏的h:或a4j:commandButton提交表单
1-用户点击'fake'提交按钮,这是一个a4j:命令按钮,
2- Ajax调用更新renderer属性
中的字段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>
是的,您需要使用a4j。
试试这样做(未测试,但遵循算法):
<a4j:commandButton onclick="if(messageHasToBeDisplayed){Richfaces.showModalPanel('modalId');}else{doSomeStuff();}" />
...
<a4j:jsFunction name="doSomeStuff" action="#{controller.doSomeStuff}" reRender="..."/>
这向您展示了如何在必要时显示模态面板。没有更多的代码我不能帮助你更多,但我认为这应该帮助你…