У меня очень простое приложение. Один компонент, аннотированный с @Named @SessionScoped и двумя веб-страницами. home.xhtml и list.xhtml. Когда я устанавливаю searchForm.hostanme на первой странице и снова получаю его на второй странице. Я могу видеть из инструкций sysout, что имя хоста становится установленным, но есть место, где это значение должно быть на странице list.xhtml. Он исчезает между домом и списком. Зачем?Почему управляемый компонент JSF 2 недоступен на странице результатов?
home.xhtml
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="en" xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html">
<h:head></h:head>
<h:form>
<h:outputText value="Hi Mama" />
<h:inputText value="#{searchForm.hostname}" />
<h:commandButton action="list?faces-redirect=true" value="Devices" />
<h:commandButton action="#{searchForm.reset}" value="Reset" immediate="true" type="reset" />
</h:form>
</html>
List.xhtml
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="en" xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html">
<h:outputText value="Device is #{searchForm.hostname}" />
</html>
SearchForm.java
import javax.enterprise.context.RequestScoped;
import javax.inject.Named;
@Named
@RequestScoped
public class SearchForm {
String hostname;
public String getHostname() {
return hostname;
}
public void setHostname(String hostname) {
System.out.println("hostname is "+ hostname);
this.hostname = hostname;
}
public String reset(){
System.out.println("RESETTING");
System.out.println("hostname is "+ hostname);
return "/index.xhtml";
}
}
Я думаю, что это может быть проблемой обзорное, но я пытался несколько областей и до сих пор searchForm.hostname недоступно к моменту перехода на страницу list.xhtml.
Я читал и читал и читал JSF2, но я все еще не могу решить. Надеюсь, это простая проблема.
У меня есть файл beans.xml в WEB-INF.
В вашем коде говорится, что bean is '@ RequestScoped'. Описанное поведение является правильным, если бит является объектом запроса. – SJuan76
omg Я только что понял, что задал почти этот точный вопрос раньше. http://stackoverflow.com/questions/9861144/why-is-my-viewscoped-bean-not-surviving-hcommandbutton Я начал работать над jsf2 некоторое время назад и с тех пор не смотрел. Я думаю, что это неправильное соответствие библиотек. – april26
Вы должны создать ответ и отметить его, если это так! –