JSF - Richfaces, обработать отправленные данные формы и затем подтвердить, чтобы продолжить или отменить

Я хочу показать диалоговое окно подтверждения, чтобы продолжить или отменить операцию сохранения при отправке формы. У меня есть форма с кнопкой сохранения, которая вызывает метод действия для сохранения данных в форме. При нажатии кнопки сохранения файл будет считан на стороне сервера до сохранения данных формы. Данные из файла будут объединены в данные формы, а затем данные формы будут сохранены. Мне нужно несколько значений из формы, чтобы определить, какой файл будет прочитан. Пока проблем нет. Если выброшено исключение FileNotFoundException или не найдены необходимые данные из файла, я хочу показать диалоговое окно подтверждения, чтобы продолжить или отменить операцию сохранения с вызванным сообщением.

У кого-нибудь есть примеры или идеи, как с этим справиться? Мне нужно использовать a4j? Благодарю. Я использую Rifchfaces 3.3.3 и Seamframework 2.2.

2 ответа

Решение

Сначала я должен исправить заголовок моего вопроса. Это не "обработка отправленных данных формы", а данные формы, которые будут отправлены после некоторой проверки.

Теперь решение.

Например, у меня есть следующее в моей форме:

  • некоторые поля

  • a4j:commandButton для повторной визуализации полей и выполнения действия 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>  

Да, вам нужно использовать a4j.

Попробуйте что-то подобное (не проверено, но следуйте алгоритму):

<a4j:commandButton  onclick="if(messageHasToBeDisplayed){Richfaces.showModalPanel('modalId');}else{doSomeStuff();}"  />
...
<a4j:jsFunction name="doSomeStuff" action="#{controller.doSomeStuff}" reRender="..."/>

Здесь показано, как отобразить модальную панель при необходимости. Без большего количества кода я не смогу помочь вам больше, но я думаю, что это должно помочь вам...

Другие вопросы по тегам