В чем разница между Model bean и Backing bean в JSF?
Резюме, взятое из Эд Бернса и Криса Шалька, JSF Полная ссылка,
В этом примере указана страница входа с значением компонентов пользовательского интерфейса, привязанным к модели bean свойства для идентификатора пользователя и пароля, которые имеют тип String:
<h:inputText id="userid" value="#{login.userid}" />
and
<h:inputSecret id="password" value="#{login.password}" />
@ManagedBean
@RequestScoped
public class Login {
String userid;
String password;
public Login() {
}
public String getUserid() {
return userid;
}
public void setUserid(String userid) {
this.userid = userid;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
// Action Method
public String loginAction() {
if (userid.equals("guest") && password.equals("welcome")) {
return "success";
} else {
return "failure";
}
}
}
Страница Facelet вместо использования привязки компонента для установки ссылку с компонентов пользовательского интерфейса на странице на компоненты пользовательского интерфейса , объявленные в резервной копии bean. Код JSF View для этого
<h:inputText id="userid" binding="#{login_Backing.userid}" />
and
<h:inputSecret id="password" binding="#{login_Backing.password}" />
В этом примере резервная копия bean зарегистрирована с именем "login_Backing" и содержит декларации UIInput.
В качестве альтернативы привязке значений полей ввода на странице к свойствам модели, мы вместо этого просто объявить свойства UIInput в резервной копии bean, используя
private HtmlInputText userid;
private HtmlInputSecret password;
// Getters and setters for these properties not shown
public String loginAction() {
if (userid.getValue().equals("guest") &&
password getValue().equals("welcome"))
return "success";
else
return "failure";
}
(Оба HtmlInputText и HtmlInputSecret напрямую распространяются на UIInput.)
Обратите внимание на использование getValue(). Это связано с тем, что код должен извлекать значение из компоненты пользовательского интерфейса, идентификатор пользователя и пароль, тогда как раньше (выше с атрибутом значение) это было просто сравнивая Строковые свойства в модели bean. Как вы можете видеть, привязка этого компонента изменение примера входа в систему показывает, как можно просто использовать компоненты пользовательского интерфейса в поддержка beans для хранения переходных значений (таких как учетные данные для входа), а не для передачи эти значения непосредственно на Модель beans. Он также показывает, что размещение кода обработки событий, такого как как loginAction(), в поддержку bean - это лучше практика , чем размещение в модели bean, который не является предполагаемым, чтобы содержать код, связанный с пользовательским интерфейсом.
Итак, вышеупомянутая разница заключается только в разностной поддержке b/w beans и модели beans?