JSF:页面转发与页面重定向

本文介绍了JSF中的页面转发和页面重定向的区别。页面转发是服务器端内部操作,浏览器URL不变;而页面重定向会产生新的HTTP请求,浏览器URL会更新。JSF 2.0中可通过在结果字符串末尾添加“?faces-redirect=true”启用重定向。通常,页面转发速度更快,但页面重定向用于防止重复表单提交。
摘要由CSDN通过智能技术生成

默认情况下,JSF将在导航到另一个页面时向前执行服务器页面。 请参见以下示例,以区分页面转发和页面重定向。

start.xhtml ”页面,带有一个按钮,导航到“ page1.xhtml ”页面。

1.上一页

以下是前进页面的工作方式:

  1. 浏览器将“ GET ”请求发送到URL:http:// localhost:8080 / JavaServerFaces / faces / start.xhtml。
  2. JSF收到了请求并返回“ start.xhtml ”。
  3. 浏览器显示“ start.xhtml ”的内容。
  4. 用户单击按钮。
  5. JSF收到了该动作,并在服务器端执行了一个内部页面,转发到“ page1.xhtml ”。
  6. JSF返回“ page1.xhtml ”。
  7. 浏览器显示“ page1.xhtml ”的内容。

在向前的页面中, 浏览器的URL不是update

jsf2-page-forward-example

2.页面重定向

这是页面重定向的工作方式:

  1. 浏览器将“ GET ”请求发送到URL:http:// localhost:8080 / JavaServerFaces / faces / start.xhtml。
  2. JSF收到了请求并返回“ start.xhtml ”。
  3. 浏览器显示“ start.xhtml ”的内容。
  4. 用户单击按钮。
  5. JSF收到了该动作,并将对“ page1.xhtml ”的“ 重定向 ”发送回浏览器。
  6. 浏览器收到响应,并向URL发送另一个“ GET ”请求:http:// localhost:8080 / JavaServerFaces / faces / page1.xhtml。
  7. JSF收到了请求并返回“ page1.xhtml ”。
  8. 浏览器显示“ page1.xhtml ”的内容,并且浏览器的URL已更新
jsf2-page-redirection-example

要在JSF 2.0中启用页面重定向,可以在结果字符串的末尾附加“ faces-redirect=true ”。

向前翻页。

<h:form>
    <h:commandButton action="page1" value="Page1" />
</h:form>

页面重定向。

<h:form>
    <h:commandButton action="page1?faces-redirect=true" value="Page1" />
</h:form>

在导航规则中,可以通过在<navigation-case />添加<redirect />元素来启用页面重定向。

<navigation-rule>
	<from-view-id>start.xhtml</from-view-id>
	<navigation-case>
		<from-outcome>page1</from-outcome>
		<to-view-id>page1.xhtml</to-view-id>
		<redirect />
	</navigation-case>
</navigation-rule>

结论

与页面重定向相比,默认页面转发机制要更快,因为页面重定向向服务器添加了额外的HTTP请求。 因此,仅在必要时启用页面重定向,例如,使用Post / Redirect / Get Design Pattern解决经典的重复表单提交问题

下载源代码

下载它– JSF-2-Page-Redirection-Example.zip (9KB)

翻译自: https://mkyong.com/jsf2/jsf-page-forward-vs-page-redirect/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值