JSF 2.0 View Scope 后退按钮安全吗?

2024-04-07

JSF 2.0 View Scope“后退按钮”安全吗?例如如果我将模型存储在 View Scope 中,并从第 1 页、第 2 页、第 3 页到第 4 页,一路修改模型对象(通过输入字段),然后按两次后退按钮返回第 2 页并进行更改(再次将我带到第 3 页),视图范围中的模型是否仅具有最初呈现第 2 页时所做的更改,还是会具有后续页面的更改?

Oracle ADF 有一个称为“进程范围”的东西,它通过标记放入会话中的内容来处理此问题,因此每个页面都有自己的模型副本。


首先,视图范围绑定到特定的页面/视图。多个视图不会共享同一个视图作用域 bean。视图范围以初始 GET 请求开始,并在 POST 操作使用非null返回值。

一般有以下几种场景,具体取决于浏览器是否被指示缓存页面以及JSF状态保存配置。我假设这些页面之间的导航是通过 POST 请求进行的(因为它听起来很像“向导”场景)。

当按下后退按钮时:

  • If browser is instructed to save the page in cache, then browser will load the page from the cache. All previously entered input values will reappear from the browser cache (thus not from the view scoped bean in the server side!). The behavior when you perform a POST request on this page depends further on the javax.faces.STATE_SAVING_METHOD configuration setting:
    • 如果设置为server(默认),然后ViewExpiredException会发生这种情况,因为从一个页面到另一页面的 POST 导航后,视图状态立即在服务器端被销毁。
    • 如果设置为client,那么它将正常工作,因为整个视图状态包含在表单的隐藏输入字段中。
  • 或者,如果浏览器被指示not将页面保存在缓存中,然后浏览器将显示浏览器默认的“页面已过期”错误页面。仅当应用 POST-redirect-GET 模式进行导航时,浏览器才会在与重定向 URL 相同的 URL 上发送全新的 GET 请求。默认情况下,所有先前输入的输入值都将被清除(因为视图作用域 bean 被重新创建),但如果浏览器打开了“自动完成”(可在浏览器级别配置),则它可能会自动填充输入。这可以通过添加来禁用autocomplete="off"属性到输入组件。当您在此页面上执行 POST 请求时,无论 JSF 状态保存方法如何,它都会正常工作。

在单个视图上执行“向导”场景会更容易,该视图包含有条件呈现的步骤,并在向导部分本身提供后退按钮。

也可以看看:

  • javax.faces.application.ViewExpiredException:视图无法恢复 https://stackoverflow.com/questions/3642919/javax-faces-application-viewexpiredexception-view-could-not-be-restored/3642969#3642969
  • JSF 2.0 中向导模式的使用范围是什么? https://stackoverflow.com/questions/9896813/what-scope-to-use-in-jsf-2-0-for-wizard-pattern
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JSF 2.0 View Scope 后退按钮安全吗? 的相关文章

  • Apache Tomahawk 文件上传不工作

    我在使用 Apache Tomahawk 时遇到问题 Glassfish 3 0 1 不断记录 警告 JSF1064 无法从库 org apache myfaces custom 中找到或提供资源 inputFileUpload xhtml
  • 如何将 Font Awesome 4.3.0 与 JSF 集成?

    我已经尝试过这个方法 如何将 webjars org 中的 Font Awesome 与 JSF 结合使用 https stackoverflow com questions 18891768 how to use font awesome
  • 如何从 Richfaces 弹出窗口刷新父 jsf 页面

    我有一个包含几个字段的 JSF 页面 我跟着这个tutorial http balusc blogspot com 2011 01 jsf 20 tutorial with eclipse and html来自 BalusC 一切都很好 然
  • 数据表中每一行的工具提示

    这个问题尖叫着是重复的JSF 2 0 Primefaces 2 x 数据表行的工具提示 https stackoverflow com questions 9980155 jsf 2 0 primefaces 2 x tooltip for
  • 在 JSF 页面上显示当前日期

    是否可以在 JSF 中显示当前日期 今天的 而不使用支持 bean 我有以下代码片段 但没有成功 div class leftSide Today s date currentDate div or
  • JSF 2.0 Facelets 模板继承

    这是一个扩展的转发JSF 2 0 Facelets 嵌套模板继承 https stackoverflow com questions 5323937 jsf 2 0 facelets nested templates inheritance
  • JSF 2.1 中的 HTML 4 <按钮>

    我想使用以下命令 The JSF
  • 如何在 JSF 中实现登录过滤器?

    即使用户知道某些页面的网址 我也想阻止某些页面的访问 例如 localhost 8080 user home xhtml 需要先登录 如果没有登录则重定向到 index xhtml 在 JSF 中如何做到这一点 我在谷歌上看到需要一个过滤器
  • OpenFaces JSF 2 组件库

    有没有人尝试过开放面孔 3 http openfaces org并可以对以下内容进行简短评论 稳定 与其他库的兼容性 PrimeFaces RichFaces 等 使用方便 换肤功能 主题支持等 我正在寻找 JSF 2 组件库 我目前正在使
  • 使用普通 HTML 按钮在 JavaScript 中调用托管 bean 方法

    我需要在单击普通 HTML 按钮时调用 JavaScript 中的托管 bean 方法 如果我使用 JSF2 x 和 Primefaces 是否可以做到这一点 对的 这是可能的 Primefaces 提供了一个有用的钩子来用它的组件来做到这
  • 沉默 FullAjaxExceptionHandler

    所以在面对可怕的事情之后javax faces application ViewExpiredException 我不得不去互联网上寻找合适的解决方案 幸运的是 解决方案很容易获得 我继续采用了 OmniFacesFullAjaxExcep
  • p:对话框没有按预期工作?

    我有两个 p commandLink
  • JSF 定制转换器

    我有一个像这样的自定义转换器 Override public Object getAsObject FacesContext facesContext UIComponent component String str System out
  • JSF 登录期间何时创建会话?

    在JSF中 会话似乎是创建的before登录成功 即简单地请求登录页面就会导致创建一个新会话 为每个收到的请求而不是每个成功登录的用户创建一个会话似乎非常浪费 并且容易受到 DDoS 攻击 下面的代码非常通用 但显示了我所指的那种简单场景
  • CDI Bean 访问 Spring bean?

    我知道这听起来很奇怪 将 CDI 焊接 和 Spring 混合用于控制器 但想象一下这种情况 有了CDI 我可以利用 ConversationScoped 这是我的要求之一 到目前为止我不知道我是否可以在这种范围内使用spring 因为如果
  • JSF2.0 中的空白输入字段未设置为 NULL

    我有一个支持 bean 其中 fileld 为 Long Double Integer String 当我没有在输入字段中指定任何内容时 长整型 整数和双精度值将被视为零 而不是空 我正在使用 tomcat 来部署我的应用程序 有什么解决办
  • 将默认消息“验证错误:需要值”更改为“需要值”

    我可以修改这个默认值吗required true 验证消息仅显示 需要值 formId inputId 验证错误 值是必需的 Either使用输入组件的requiredMessage属性
  • h:message 为空时的默认输出

    我正在寻找一种在 JSF 中实现以下切换的方法 div if empty div
  • 如何将布尔值设置为“是”或“否” h:selectOneRadio

    我在 Tomcat 7 上运行的 JSF 2 Mojarra 2 0 8 中有以下代码
  • JSF 2.0 复合组件放入jar中

    我正在尝试创建一个复合组件以在我的项目中使用 因此 我创建了一个名为 componentes ui web 的项目 并放置了 2 个作为我的组件的 xhtml 文件 项目的结构是这样的 src gt gt main gt gt gt jav

随机推荐

  • 如何将阴影置信区间添加到具有指定值的线图中

    我有一个汇总数据的小表 其中包含四个类别的比值比 置信上限和下限 每个类别内有六个级别 我想使用 ggplot2 生成一个图表 它看起来与指定 lm 时创建的通常图表类似 它是 se 但我希望 R 仅使用表中预先指定的值 我已经成功创建了带
  • iOS 7 以编程方式按应用程序 VPN

    我正在开发一个 iOS 7 应用程序 我想知道 每应用程序 VPN 功能是否是 手动 激活的 如位置服务 您可以选择哪个应用程序可以或不可以 或者我可以设置它通过应用程序内的代码 环顾网络 我发现有关它的信息很少 苹果的公告也没有明确说明
  • 为什么某些 API 提供商需要 API 密钥?

    多个 Web 服务 API 需要您注册 API 密钥 例如 UPS Web 服务需要一个密钥 该密钥包含在对其服务的调用中 除了用户名和密码 提供商使用此密钥做什么 也许 UPS 是唯一一家同时需要 API 密钥和用户名 密码的公司 一个想
  • 匹配字符的第一个唯一实例[重复]

    这个问题在这里已经有答案了 我正在尝试匹配only字符串中字符的第一个实例 例如sdtmig 3 1 2 with XPath 替换 https www w3 org TR xpath functions func replace并将其替换
  • GWT 计时器取消不起作用

    我正在尝试编写代码来使用 GET 和 GETQuery 区分单击和双击 我明白了here http jsfiddle net KpCwN 4 所以我将它翻译成 GWT 如下所示 我的应用程序不能有全局变量 所以我用元素属性来完成该部分 im
  • Newtonsoft.Json.JsonReaderException:无法将字符串转换为日期时间:

    我正在尝试将一些数据插入本地数据库 我收到错误 Newtonsoft Json JsonReaderException 无法将字符串转换为日期时间 20 09 1982 12 00 00 路径 0 BIRTHDAY 第 1 行 位置 71
  • 将下载的 torrent 保存在内存中而不是文件 libtorrent

    使用 Rasterbar libtorrent 我不希望下载的数据放在我的硬盘上 而是放在管道或变量或软的东西上 这样我可以将其重定向到其他地方 Mysql 甚至垃圾 如果它不是我想要的 有没有如果不是使用 Libtorrent 在 C 中
  • 如何同时编译 .Net 3.5 和 4 的项目

    我需要为 Net 3 5 和 Net 4 0 编译一个项目 做到这一点的最低摩擦方式是什么 如果我从另一个程序集引用该项目 如何确定目标运行时 或者我应该直接引用二进制文件 我只需通过两个 csproj 文件来完成此操作 然后我可以轻松设置
  • 如何处理 Web 版 Twitter 数字 API

    我正在研究 Twitter 数字 api 将其集成到我的网站 该网站需要验证用户的唯一性 这里有一个link https dev twitter com twitter kit web digits 这是唯一一篇正式说明如何在网络上实现数字
  • 使用 Delphi 2010 进行远程调试时没有断点 - 所以卡在 Delphi 7 上

    去年 8 月进行初步调查后 我又重新开始使用 Delphi 2010 进行远程调试 我已确保 D2010 具有更新 4 和 5 并且远程调试器是 Embarcadero 网站上的最新版本 遵循非常有用的说明here http delphi
  • 如何删除 Perforce 中的工作区(使用 p4v)?

    我是 Perforce 的新手 创建了一些工作区作为熟悉它的练习 现在我想删除一些工作区 我只想删除工作区 以便它们不会出现在工作区视图的下拉列表中 do not想要对实际的仓库文件执行任何操作 谷歌搜索答案会产生 使工作区处于活动状态 的
  • 如何在docker中运行mongod后运行mongorestore

    我正在尝试使用 docker 设置一个 mongodb 服务器 让它从网络下载转储并用该信息填充它 我的问题是我可以让它运行并填充数据库 但完成后 它就会关闭 这就是我解决问题的方法 sudo u mongodb usr bin mongo
  • 无法将脚本文件添加到组件 html

    我在index html root 中有一个脚本文件引用 索引 html 这里不需要 sliderfunctions js 它包含一些关于 slider 的特定功能 所以我将它携带到 slider component html 文件 但正如
  • java 图像转换为矩阵

    有一个非常简单的 jpg 图像 我想将其转换为矩阵 但是使用 getRGB i j 指向像素会给出 ArrayIndexOutOfBounds 的运行时异常 以下代码对图像大小有限制吗 它只是显示整个图像中获得的第一个颜色代码 Buffer
  • 路由跟踪如何工作? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 这看起来几乎是神奇的 为了绘制到 Internet 上某个其他节点的整个路径 traceroute 命令执行什么操作 Traceroute 将 TTL
  • Android Room,如何保存一个实体,其中变量之一是密封类对象

    我想在我的 Room 数据库中保存一个对象 其中一个变量可以是一种类型或另一种类型 我认为密封类是有意义的 所以我采取了这种方法 sealed class BluetoothMessageType data class Dbm val da
  • 如何获取和设置 ag-grid 状态?

    如何获取并重新设置 ag grid 表的状态 我的意思是 正在显示哪些列 以什么顺序 使用什么排序和过滤等 Update getColumnState 和 setColumnState 似乎接近我想要的 但我无法弄清楚应该保存和恢复状态的回
  • 取两个变量作为日期和时间并组合起来形成一个日期

    我想采用两个变量 一个代表日期 另一个代表时间 然后将它们组合起来形成一个日期 然后我想使用该组合日期和时间来检查当前日期和时间是否距组合日期和时间 24 小时或更短 game date game date game time game t
  • 如何使用 INLINE CSS 将 Excel 电子表格导出到 HTML 表格?

    我想知道如何将电子表格中的表格转换为 html 格式 而无需所有 Microsoft 特定代码 我们的网页托管在其他地方 这意味着我无权访问我们页面的一部分 我们只能将内容插入 我只是希望表格保留相同的字体 边框和格式 并将任何和所有 CS
  • JSF 2.0 View Scope 后退按钮安全吗?

    JSF 2 0 View Scope 后退按钮 安全吗 例如如果我将模型存储在 View Scope 中 并从第 1 页 第 2 页 第 3 页到第 4 页 一路修改模型对象 通过输入字段 然后按两次后退按钮返回第 2 页并进行更改 再次将