В JSF, как заставить h: commandButton отправлять только одно поле? - PullRequest
2 голосов
/ 02 февраля 2011

В JSF2 у меня есть командная кнопка, которая должна отправлять только одно поле:

<h:inputHidden id="dirty" value="#{bean.dirty}" />
<h:commandButton value="Back" immediate="true"
                 action="#{bean.backIfClean}">
  <f:ajax execute="dirty" />
</h:commandButton>

Этот код не работает. Я изменяю значение скрытого поля с помощью JavaScript, затем хочу отправить его на сервер. Однако он даже не настроен на компонент (setDirty не вызывается).

Если я удаляю immediate="true", запускается проверка, чего я хочу избежать в этом случае.

Можно ли как-то избежать проверки и отправить dirty значение поля?

Ответы [ 3 ]

1 голос
/ 02 февраля 2011

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

Единственное решение, которое у вас есть, - это получить значение самостоятельно из запроса.

Чего я не понимаю, так это того, почему вы не можете сделать только выполнение.Обычно, только «грязный» должен быть проверен в этом случае.Разве это не то, что вы хотите?

1 голос
/ 03 февраля 2011

Вы можете использовать следующий подход для отправки / получения одного значения:

<h:commandButton action="#{bean.backIfClean}">
   <f:param name="dirty" value="#{bean.dirty}"/>       
</h:commandButton>

Код бобов:

public String backIfClean()
{
   String dirty = (String)FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("dirty");
}
1 голос
/ 02 февраля 2011

Когда вы добавляете immediate="true" к компоненту UICommand, тогда только поля UIInput, которые также имеют immediate="true", будут обрабатываться. Смотри также это резюме .

Итак, добавьте immediate="true" к h:inputHidden.

(примечание: не проверено в сочетании с f:ajax, это чистая теория)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...