我创建了一个非常简单的 JSF 来测试什么是回发。JSP 包含一个用于打印“adfFacesContext.postback”表达式的输出文本,以及一个用于提交的按钮。
<f:view>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252"/>
<title>TEST</title>
</head>
<body>
<af:form>
<h:outputText value="#{adfFacesContext.postback}" />
<h:commandButton value="SUBMIT" action="ok"/>
</af:form>
</body>
</html>
</f:view>
我在 faces-config.xml 中创建了一个导航规则:
<navigation-rule>
<from-view-id>/test.jsp</from-view-id>
<navigation-case>
<from-outcome>ok</from-outcome>
<to-view-id>/test.jsp</to-view-id>
</navigation-case>
</navigation-rule>
第一次加载页面时,“adfFacesContext.postback”表达式被评估为 false,所以一切正常。
但是当我按下按钮时,“adfFacesContext.postback”表达式再次被评估为假。
为什么?
我观察到如果我从 faces-config.xml 中删除导航规则,当我按下按钮时,“adfFacesContext.postback”表达式被评估为真。
为什么我必须删除导航规则才能获得正确的结果?