2013-04-23 3 views
0

Я использую struts 1 в устаревшем проекте. Я хочу подтвердить форму. Я прочитал хорошо article об этом. Но я не понимаю, что делают struts, если метод проверки формы возвращает непустые ActionErrors. Я указал validate="true" и input="somepage.jsp" в действии, но я получаю пустую страницу, если проверка моей формы не проходит. Как я понимаю, он должен оставаться на странице, указанной во вводе? Я прав?Struts 1 form validation

редактировать

<action path="/struts/BlaBlaAction" 
       type="com.example.BlaBlaAction" 
       name="BlaBlaForm" 
       validate="true" 
       scope="request" 
       input="/struts/blablainput.jsp"> 
       <forward name="someaction" path="/struts/AnotherAction.do"/> 
       <forward name="error" path="/error.html" redirect="true"/> 
</action> 

распорки Папки находится в корне моего приложения

ответ

1

Кроме того, необходимо, чтобы отобразить ошибки проверки с помощью <html:errors/> тега, в somepage.jsp

Если ваша форме метод validate возвращает непустые ActionErrors, Struts перенаправляет на JSP, который вы определили как вход. А затем, если у вас есть <html:errors> во входном JSP, все ActionErrors повторяются и отображаются.

+0

Если я не вижу эти ошибки с помощью , я получу пустую страницу? – maks

+0

Да, - это способ отображения ошибок, которые выдавал validate(), если нет, то нет способа, каким образом они будут отображаться в магии. –

+0

даже за исключением есть другие элементы на странице? – maks

0

Возможно, вы забыли «сбой» вперед в ваших настройках XML. Посмотрите на этот пример:

<action path="/LogonSubmit" type="app.jcj.LogonAction" name="logonForm" 
      scope="request" validate="true" input="/pages/Logon.jsp"> 
    <forward name="success" path="/pages/Welcome.jsp"/> 
    <forward name="failure" path="/pages/Logon.jsp"/> 
</action> 
+0

Так что я должен указать этот «отказ» в моем действии? – maks

+0

Да, вы можете отправить на ту же страницу, что и успех, если хотите, но вам нужно явно объявить об этом. Попробуйте и сообщите нам, если это решение работает – cahen

+0

@maks Вам не нужен результат «сбоя»; в общем случае вы бы использовали метод getInputForward() 'для возврата на страницу, определенную как« вход »для действия. Вы * можете * иметь другой отказ вперед, но если это та же самая страница, что и ваш ввод, используйте то, что дает вам рамка. –