Причины использования привязки в форме JSF

Я новичок в JSF. Может кто-нибудь объяснить мне, почему атрибут binding используется в коде ниже:

<h:form id="epox" binding="#{rxManufacturerEditor.form}"> 
</h:form>

Я немного смущен атрибутами value и binding, однако я не понимаю, почему мы упоминаем атрибут привязки с тегом формы.

2 ответа

Единственная причина использования привязки для bean UIComponent экземпляра, о котором я знаю, - это возможность манипулировать этим компонентом программным способом в методе action/actionlistener или ajax listener, как в:

UIInput programmaticInput;//getter+setter
String value1, value2;//getter+setter
...
public void ***********() {
 ELContext ctx = FacesContext.getCurrentInstance().getELContext();
 ValueExpression ve = FacesContext.getCurrentInstance().getApplication().getExpressionFactory().createValueExpression(ctx, "#{bean.value2}", Object.class);
 programmaticInput.setValueExpression("value", ve);
}

После запуска метода действия значение компонента <h:inputtext 2011="" value="#{bean.value1}" binding="#{bean.programmaticInput} ... /> будет привязано к value2 вместо value1.

Я редко использую этот тип привязки, потому что facelets предлагает определение представления на основе XML без необходимости (регулярно) путаться с программными компонентами.

Обязательно узнайте, что вышеупомянутая конструкция завершается неудачей в версии Mojarra старше 2.1.18, заставляя просматривать область видимости beans для воссоздания каждого HTTP-запроса. Для получения дополнительной информации см. @Сбой ViewScoped в обработчиках тегов.

<p>Как правило, вы хотите использовать привязку <span> к представлению</span>, в котором вы можете выполнять проверку кросс-поля:</p> <pre class="prettyprint linenums">&lt;h:inputtext binding="#{input}" ...=""&gt; &lt;h:inputtext validator="#{bean.validate}" ...=""&gt; &lt;/h:inputtext&gt; &lt;/h:inputtext&gt;</pre> <p>Здесь весь первый компонент ввода будет доступен как атрибут второго компонента, и поэтому его значение будет доступно в связанном валидаторе (методе). Другой пример - проверить, какой из компонентов команды был запущен в поле зрения:</p> <p>Здесь входной текстовый компонент будет отключен только при нажатии кнопки.</p> <p>Для получения дополнительной информации перейдите к следующим ответам BalusC:</p> <ul> <li> <a href="https://stackoverflow.com/questions/12506679/what-is-component-binding-in-jsf-when-it-is-preferred-to-be-used" target="_blank">Что такое связывание компонентов в JSF? Когда это предпочтительнее использовать?</a></li> <li> <a href="https://stackoverflow.com/questions/14911158/how-does-the-binding-attribute-work-in-jsf-when-and-how-should-it-be-used" target="_blank">Как работает атрибут привязки в JSF? Когда и как его использовать?</a></li> </ul>


Тег может быть привязан к свойству bean, поддерживающему те же теги HTMLForm, что и те же самые теги.

См. также: Разница между значением и привязкой

licensed under cc by-sa 3.0 with attribution.