JSF - Richfaces, обработать отправленные данные формы и затем подтвердить, чтобы продолжить или отменить - PullRequest
1 голос
/ 14 сентября 2011

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

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

Ответы [ 2 ]

1 голос
/ 20 сентября 2011

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

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

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

  • некоторые файлы

  • a4j: commandButton для повторной визуализации полейи выполните действие doSomeStuff ()

  • скрытый h: или a4j: commandButton для отправки формы.

1 - пользователь нажимает на «подделку»'кнопка submit, которая является 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>  
0 голосов
/ 15 сентября 2011

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

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

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

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

...