2014-08-29 2 views
1

У меня есть класс bean и selectBooleanCheckbox на странице xhtml. Я хочу, чтобы при щелчке поля значение должно быть установлено в бэкэнде.Задайте значение bean-компонента при щелчке selectbooleancheckbox

Вот код:

<h:selectBooleanCheckbox id="provisioningTargetCollector" 
          value="#{targetSource.provisioningTargetCollector}"> 
          </h:selectBooleanCheckbox> 

Bean Class:

public boolean isProvisioningTargetCollector() { 
    return _provisioningTargetCollector; 
} 

public void setProvisioningTargetCollector(boolean provisioningTargetCollector) { 
    _provisioningTargetCollector = provisioningTargetCollector; 
} 

Но геттер и сеттер вызываются только при загрузке страницы. Как установить значение в методе bean при щелчке по галочке.

ответ

4

Модель будет заполняться данными формы только при нажатии кнопки отправки. Если вы хотите сделать частичное обновление на сервере, вам необходимо отправить запрос AJAX. К счастью, начиная с JSF 2, это было довольно просто с введением тега <f:ajax>. Он добавляет возможности ajax к UIComponent экземплярам, ​​которые реализуют интерфейс ClientBehaviorHolder, то есть компоненты, которые могут запускать запросы ajax.

Для частичного обновления compenets вам необходимо указать идентификаторы своих клиентов в атрибуте execute тега <f:ajax>. Поскольку значение по умолчанию для атрибута execute равно @this или компоненту, к которому прикреплен тег. Как только вы хотите обновить только данный <h:selectBooleanCheckbox> вы можете сделать это так же просто, как гнездящихся чистый <f:ajax /> тег внутри вас CheckBox, т.е .:

<h:selectBooleanCheckbox id="provisioningTargetCollector" value="#{targetSource.provisioningTargetCollector}"> 
    <f:ajax /> 
</h:selectBooleanCheckbox> 
+0

его работы. Благодарю. Теперь я хочу показать/скрыть поле combox по значению этого флажка. Вы можете проверить этот вопрос здесь http://stackoverflow.com/questions/25551303/jsf-ajax-render-not-working-on-selectbooleancheckbox. Извините, я новичок в JSF. –

+0

Добро пожаловать! Используйте атрибут 'render' тега' 'и следуйте тому, что оценивается атрибутом' rendered' компонентов, подлежащих обновлению. Это поможет вам в правильном направлении, и вы решите проблему самостоятельно. – skuntsel

+0

Спасибо! Я так делаю. Но я не могу понять, почему он не работает. Я проверил много раз. –