Forms 用户输入don';当用户在页面之间导航时,无法进行验证
我的问题是,当用户在页面之间导航时,用户输入不会被提交和验证 当时我正在学习JSF,并编写一个应用程序。该应用程序由多个页面组成。我在插入导航模板时使用默认模板 这是我的导航模板Forms 用户输入don';当用户在页面之间导航时,无法进行验证,forms,jsf,navigation,submit,Forms,Jsf,Navigation,Submit,我的问题是,当用户在页面之间导航时,用户输入不会被提交和验证 当时我正在学习JSF,并编写一个应用程序。该应用程序由多个页面组成。我在插入导航模板时使用默认模板 这是我的导航模板 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <ui:composition xmlns="
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:pt="http://xmlns.jcp.org/jsf/passthrough">
<ui:insert name="navigation">
<nav>
<h:panelGroup>
<h:form>
<h:commandButton value="GO BACK" styleClass="button" action="GOBACK"/>
<h:commandButton value="Reset" pt:type="Reset" styleClass="button" action="RESET"/>
<h:commandButton value="GO FORWARD" action="GOFORWARD" styleClass="button"/>
</h:form>
</h:panelGroup>
</nav>
</ui:insert>
</ui:composition>
这是我的default.xhtml模板
<!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:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html">
<h:head>
<title><ui:insert name="title">Page</ui:insert></title>
<h:outputStylesheet library="css" name="normalize.css"/>
<h:outputStylesheet library="css" name="atmosphere.css"/>
<h:outputStylesheet library="css" name="layout.css"/>
</h:head>
<h:body>
<div id="container">
<div id="header">
<ui:include src="header.xhtml"/>
</div>
<div id="content">
<ui:insert name="content">
Content area. See comments below this line in the source.
</ui:insert>
</div>
<div id="navigation">
<ui:insert name="navigation">
<ui:include src="navigation.xhtml"></ui:include>
</ui:insert>
</div>
</div>
</h:body>
</html>
页
内容区。请参阅源代码中此行下方的注释。
在faces配置中,我有一些导航规则,例如:
<navigation-rule>
<display-name>firstPage.xhtml</display-name>
<from-view-id>/firstPage.xhtml</from-view-id>
<navigation-case>
<from-outcome>GOFORWARD</from-outcome>
<to-view-id>/secondPage.xhtml</to-view-id>
</navigation-case>
</navigation-rule>
firstPage.xhtml
/firstPage.xhtml
前进
/secondPage.xhtml
现在我想制作一个内容模板客户端,其中包含一个
。但现在的问题是,当用户按下其中一个导航按钮时,用户输入不会得到验证和提交(因为导航是另一种形式)。你知道解决办法吗?(或者我在一个额外的模板中导航时走错了方向?)
我唯一的想法是围绕default.xhtml模板中的内容和导航部分编写一个
谢谢。我同意《浪子回头夜》。例如,除了通过faces配置进行导航。您可以通过输入支持bean进行导航,如以下代码所示:
@ManagedBean
@ViewScoped
class Bean{
public String goToNextPage(){
return "nextPage.xhtml";
}
如果要将信息发送到下一页
public String goToNextPage(){
FacesContext context = FacesContext.getCurrentInstance();
context.getExternalContext().getRequestMap()
.put("info", yourInformation);
return "nextPage.xhtml"
然后在xhtml中,您将
h:commandButton value="GO FORWARD" action = "#{bean.goToNextPage()}"
现在,对于提交和验证,在backingbean中,您将获得字段中输入的信息并进行验证,有很多方法可以进行验证。假设您在第一页中有一个文本字段名userField,并且其中一个要求是用户输入一些内容,那么
First Page.xhtml
h:inputText value = "#{bean.userField}" required = "true" requiredMessage = "Input something please"
然后在豆子里
创建一个名为userField的字段
private String userField = "";
然后为它创建getter和setter这在技术上与您的问题无关,但是您确实不应该使用
faces-config
文件来定义导航案例,这些应该在您的单个文件中甚至在您的支持bean中定义。