Проверка формы в Struts Не выполнять проверку в зависимости от нажатой кнопки - PullRequest
0 голосов
/ 23 апреля 2010

У меня есть веб-приложение j2ee, работающее на стойках.Я использую проверочные XML-файлы для проверки моей формы.У меня проблема с несколькими кнопками в одной форме.У меня есть кнопки Сохранить, Удалить и Отменить.Проблема в том, что я хочу, чтобы при нажатии кнопки удаления проверка не выполнялась.Как мне это сделать.

Ответы [ 2 ]

1 голос
/ 28 апреля 2010

Не очень часто использовали среду валидации в Struts, но вы могли бы сделать это, переписав метод validate () в форме действия.

Org.apache.struts.validator.ValidatorForm - это точка входа Struts в плагин Validator. ValidatorForm переопределяет метод validate () ActionForm и делегирует проверку валидатору.

Вы можете пропустить проверку для нужной кнопки, если перезапишите метод validate () в своей форме и вызовете только метод в ValidatorForm, если это необходимо, например:

    public ActionErrors validate(ActionMapping mapping, 
                                 HttpServletRequest request) { 
      if (/* check for clicked button*/) {
        //skip validation and just return empty (i.e. no error) 
        return new ActionErrors();
      }
      // else, delegate to the validator framework
      super.validate(mapping, request);
    }
0 голосов
/ 28 июня 2011

Я также был разочарован этим ограничением. Я придумал функциональность типа «отмена», создав кнопку ввода внутри формы с URL-тегом в качестве действия для установки местоположения браузера. Таким образом, проверка формы будет выполняться только для отправки, но не для нашей специальной кнопки отмены. Мне не удалось пропустить проверку для одной или другой кнопки, когда оба типа submit. С этим решением проверка на стороне клиента также будет работать должным образом.

<sx:form validate="true" action="someAction">
     <sx:submit value="Save Changes" theme="simple"/> |
     <sx:url action="umhome"  id="cancel"></sx:url>
     <input type="button" value="Cancel" onclick="return window.location = '<sx:property value="%{#cancel}"/>'; "/>
</sx:form>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...