Отправить форму JSF, используя GET - PullRequest
7 голосов
/ 28 января 2011

Как мне отправить форму на ту же страницу и использовать параметры GET?

Содержимое страницы JSF:

<f:metadata>
    <f:viewParam name="item1" value="#{bean.item1}"/>
    <f:viewParam name="item2" value="#{bean.item2}"/>
</f:metadata>

...

<h:form>
  <h:inputText value="#{bean.item1}"/>
  <h:inputText value="#{bean.item2}"/>

  <h:button value="Submit" >
      <f:param name="item1" value="#{bean.item1}"/>
      <f:param name="item2" value="#{bean.item2}"/>
  </h:button>
</h:form>

Если я запрашиваю страницу: form.jsf? Item1 = foo & item2= bar, заполняет текстовые поля, но отправка формы сама по себе не работает.

Ответы [ 2 ]

14 голосов
/ 28 января 2011

Заменить <h:button> на

<h:commandButton value="Submit" action="form?faces-redirect=true&amp;includeViewParams=true"/>

Он эффективно запускает PRG (Post-Redirect-Get), который будет включать параметры <f:viewParam> в строке запроса.Следует отметить, что целевая страница должна иметь точно такой же <f:viewParam>.

. Другое решение состоит в том, чтобы использовать простой HTML <form> вместо <h:form>, дать элементам ввода id, соответствующий имени параметра.и используйте равнину <input type="submit">.Вы, конечно, можете также использовать простой HTML <input type="text"> здесь.

<form>
    <h:inputText id="item1" value="#{bean.item1}"/>
    <h:inputText id="item2" value="#{bean.item2}"/>

    <input type="submit" value="Submit" />
</form>

Вы должны все еще держать <f:viewParam> с обеих сторон.Вам нужно только понять, что преобразование / проверка не может быть выполнена в этой форме, они должны быть выполнены с помощью <f:viewParam> на целевой странице.

См. Также:

0 голосов
/ 27 марта 2013

Вы также можете зарегистрировать NavigationHandler, который обрабатывает ключевое слово типа «self» и перенаправляет в текущее представление и добавляет необходимые параметры запроса.

...