Как сделать проверку в struts2 при вызове действия из jquery ajax? - PullRequest
3 голосов
/ 11 января 2012

я вызываю действие struts2 из jquery ajax, в случае успеха возвращается строка, а при ошибке она должна быть отправлена ​​на ту же страницу и отображать ошибки.Я использовал следующий код, проверьте его ..

$(document).ready(function(){
            $('#getActionRs').click(function(){
                alert("call action");
                $.ajax({
                    type:"POST",
                    url: "returnToAjax",
                    data: "firstinput=" +$('#firstinput').val()+"&secondinput=" +$('#secondinput').val(),
                    success: function(msg){
                        alert("success:"+msg);
                    }
                    });
            });
        });

Я использовал приведенный выше код для вызова действия Struts.при нажатии кнопки эта вещь называется

Я указал свой элемент действия в файле конфигурации следующим образом:

<action name="returnToAjax" class="example.returnToAjax">
      <result name="success" type="stream">
         <param name="contentType">text/html</param>
         <param name="inputName">inputStream</param>
      </result>
      <result name="input" type="dispatcher">/Login.jsp</result> 
    </action>

когда он возвращает успех, он возвращает строку правильно, я сделал некоторую проверку этого действияпроверкой xml, но когда он возвращает ошибку, он просто показывает мне код файла Login.jsp и не отправляет его в Login.jsp

Ответы [ 2 ]

1 голос
/ 11 января 2012

вы делаете вещи в корне неправильно. Ajax - это то, что означает выполнение процесса с резервированием без обновления страницы и предоставления пользователю возможности остаться на той же странице.

Ваш подход - это то, что не входит в сферу действия принципала AjaxТак что даже когда у вас есть сбой проверки в вашем контроле, класс управления действиями возвращается к тому же обработчику в вашем коде Jquery, и поскольку вы указали Login.jsp в качестве шаблона представления, в результате Steam выбирает весь jsp и возвращает обратно его содержимое.

Если вы хотите использовать тот же подход, просто верните имя действия из действия, если проверка не удалась, и запретите перенаправлять пользователя на страницу ввода с помощью функции отправки формы JavaScript.

0 голосов
/ 11 января 2012

Вы можете выполнить эту процедуру:

  1. Отправка формы
  2. Ошибка проверки (проверено с помощью validation.xml)
  3. передать error.jsp в качестве входного результата, где ошибка.jsp содержит слово, допустим, скажем, ERRORPAGE
  4. вы получите error.jsp через ответ ajax.
  5. проверьте содержимое ответа, если оно начинается с ERRORPAGE, выполните перенаправление JavaScript для входа в систему.jsp

Ниже приведен фрагмент кода примера , который выполняет проверку сетки struts2 jquery через ajax.

afterSubmit:function(response,postdata){
                  return isError(response.responseText);
                  }

<script type="text/javascript">
            function isError(text){
                if(text.indexOf('ERRORPAGE')>=0){
                    return [false,text];  //do redirection here something like
                    //window.location="/login.action";
                }
                return [true,''];
            }
        </script>
...