JSF переход на другую страницу
Начинаю работать с JSF, возникла такая проблема: захотел сделать простенькую форму, в которую записывается текст, а при нажатии кнопки выводится ниже. Код брал с PrimeFaces.org
Код для xhtml
<h:form>
<h:panelGrid columns="4" cellpadding="5">
<h:outputLabel for="name" value="Name:" style="font-weight:bold" />
<p:inputText id="name" value="#{basicView.text}" />
<p:commandButton value="Submit" update="display" icon="ui-icon-check" />
<h:outputText id="display" value="#{basicView.text}" />
</h:panelGrid>
</h:form>
Код бинов
private String text;
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
Так же есть 2 xhtml файла: логин и welcome. На welcome не попасть, пока не введёшь логин.
Логин
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui">
<h:head>
<title>#{i18n.loginTitle}</title>
</h:head>
<h:body>
<h:form id="loginForm">
<p:growl id="msg" showDetail="true" life="3000" />
<p:panel header="#{i18n.auth}" style="width: 360px;margin: 100px auto 0;">
<h:panelGrid id="loginPanel" columns="2">
<h:outputText value="#{i18n.login}:" />
<p:inputText id="username" required="true" value="#{loginBacking.login}"></p:inputText>
<p:spacer></p:spacer>
<p:message for="username"></p:message>
<h:outputText value="#{i18n.password}:" />
<p:password id="password" required="true" value="#{loginBacking.password}"></p:password>
<p:message for="password"></p:message>
<p:spacer></p:spacer>
<p:commandButton action="#{loginBacking.login}" value="#{i18n.loginBtn}" update="loginForm" ajax="true"></p:commandButton>
<p:link outcome="pub/registration" value="#{i18n.registration}"></p:link>
</h:panelGrid>
</p:panel>
</h:form>
</h:body>
</html>
Welcome
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui">
<h:head>
<title>#{i18n.homeTitle}</title>
</h:head>
<h:body bgcolor="white">
<h:form id="logoutForm">
<p:toolbar>
<f:facet name="right">
<p:commandButton actionListener="#{loginBacking.logout}" value="#{i18n.exit}" ajax="false"></p:commandButton>
</f:facet>
</p:toolbar>
</h:form>
<p:layout style="min-width:600px;min-height:200px;">
<p:layoutUnit position="west" resizable="true" size="150" minSize="40"
maxSize="200">
Menu
</p:layoutUnit>
<p:layoutUnit position="center">
<h:form id="welForm">
<h:panelGrid columns="4" cellpadding="5">
<h:outputLabel for="name" value="Name:" style="font-weight:bold" />
<p:inputText id="name" value="#{homeBacking.text}" />
<p:commandButton value="Submit" update="display" icon="ui-icon-check" ajax="true" >
</p:commandButton>
<h:outputText id="display" value="#{homeBacking.text}" />
</h:panelGrid>
</h:form>
</p:layoutUnit>
</p:layout>
</h:body>
</html>
Welcome бин
private String text;
public String getText() {
return text;
}
public void setText(String text) {
Faces-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
version="2.0">
<application>
<locale-config>
<default-locale>en</default-locale>
<supported-locale>ru</supported-locale>
</locale-config>
<resource-bundle>
<base-name>resources</base-name>
<var>i18n</var>
</resource-bundle>
<resource-handler>utils.LocalizedResourceHandler</resource-handler>
</application>
</faces-config>
Web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<display-name>JavaServerFaces</display-name>
<welcome-file-list>
<welcome-file>hello.xhtml</welcome-file>
</welcome-file-list>
<context-param>
<param-name>primefaces.THEME</param-name>
<param-value>ui-lightness</param-value>
</context-param>
<context-param>
<param-name>javax.faces.FACELETS_LIBRARIES</param-name>
<param-value>/WEB-INF/taglib.xml</param-value>
</context-param>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/web_jsf/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>login.xhtml</welcome-file>
</welcome-file-list>
</web-app>
При переходе с логина на welcome, в браузерной строке остаётся login.xhtml. При обновлении опять появляется страница логина. Если забиваю в форму текст и нажимаю кнопку, то текст не выводится. Если меняю параметр ajax="true"
на ajax="false"
, то при нажатии на кнопку выбрасывает на страницу логина.
В чём может быть дело?