В пункте 1 я буду использовать Request, поскольку нет необходимости использовать View, а Session, как вы хорошо заметили, совершенно не нужен.
Для пункта 2, поскольку вы используете , я предлагаю использовать его в полной мере. Вот мое предложение:
XHTML:
<h:form>
<h:outputText value="Tag:" />
<h:inputText value="#{entryRecorder.tag}">
<f:ajax render="category" event="valueChange"/>
</h:inputText>
<h:outputText value="Category:" />
<h:inputText value="#{entryRecorder.category}" id="category" />
</h:form>
Обратите внимание на использование события valueChange вместо размытия (не то, чтобы размытие не работало, но я считаю valueChange более подходящим для компонента-держателя значения)
боб:
@ManagedBean
@RequestScoped
public class EntryRecorder {
private String tag;
private String category;
public String getCategory() {
return category;
}
public String getTag() {
return tag;
}
public void setCategory(String category) {
this.category = category;
}
public void setTag(String tag) {
this.tag = tag;
tagUpdated();
}
private void tagUpdated() {
category = tag;
}
}
Если вы действительно не хотите, чтобы метод tagUpdated выполнялся только при обновлении тега через представление, мое предложение выглядит более понятным. Вам не нужно иметь дело с событиями (или приведениями), и метод tagUpdated может быть закрытым, скрывая его функциональность от возможных злоупотреблений.