我有一个非常简单的应用程序。一个用@Named @SessionScoped 注释的bean 和2 个网页。home.xhtml 和 list.xhtml。当我在第一页设置 searchForm.hostanme 并在第二页再次访问它时。我可以从 sysout 语句中看到主机名正在设置,但是该值应该在 list.xhtml 页面上有一个空格。它在 home 和 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: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>
列表.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";
}
}
我认为这可能是一个范围问题,但我已经尝试了几个范围,但在我导航到 list.xhtml 页面时仍然无法使用 searchForm.hostname。
我一直在阅读和阅读 JSF2,但我仍然无法解决我希望是一个简单的问题。
我有一个 beans.xml 文件在 WEB-INF 中。