JSF 2.0 部分状态保存似乎不起作用

2023-11-22

我正在评估在高流量网站中使用 JSF 的可能性。有人告诉我,在 JSF 2.0 中,组件树不存储在会话中,并且一旦组件树被修改,只存储增量。

这是我正在查看的页面:

<?xml version="1.0" encoding="UTF-8"?>
<html xmlns="http://www.w3.org/1999/xhtml"
   xmlns:h="http://java.sun.com/jsf/html">
    <body>
        <h:form>
            hello, world
        </h:form>
    </body>
</html>

每次我查看此页面时,都会为会话分配近1K。如果我删除<form>标签,会话中不存储任何内容。

知道为什么组件树存储在会话中吗?我认为这将根据回发请求进行计算。


部分状态保存并不意味着状态不会保存在会话中。这仅仅意味着一个part组件树状态的将被保存而不是entire组件树状态。部分状态保存的关键思想是,在后续请求中客户端不会更改的组件的状态将不会被保存。而是通过恢复视图时在服务器端重新执行视图来获取。仅保存对客户端更改敏感的组件状态(表单、输入、按钮等)。您在会话中看到的 1K 是部分状态本身。

要自行测试,请通过以下方式打开和关闭状态context-param in web.xml:

<context-param>
    <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
    <param-value>false</param-value>
</context-param>

当设置为false,这意味着entire相反,组件树被保存。

它存储在会话中,因为这是 Servlet API 唯一提供的,其范围比请求范围更大。存储在请求范围中将没有任何价值,因为它在后续请求中将不再可用。 Servlet API 没有像 JSF 那样的视图范围概念(顺便说一句,它在幕后间接使用会话范围,基本上,视图状态是组件树状态)。

当您删除表单时,您确实不再看到它,因为实际上没有任何内容可供客户端更改(即不会有回发)。那时拯救国家就没有意义了。此外,没有什么可以将保存状态的键作为隐藏输入字段(名称为javax.faces.ViewState).

也可以看看:

  • JSF 2.0 中有哪些新增内容? - 国家储蓄
  • 视图构建时间是多少?
  • 为什么 JSF 将 UI 组件的状态保存在服务器上?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JSF 2.0 部分状态保存似乎不起作用 的相关文章

随机推荐

  • 为什么fireFooXXX()中EventListenerList是向后遍历的?

    我不明白这段代码的基本原理 取自javax swing event EventListenerList docs protected void fireFooXXX Guaranteed to return a non null array
  • 日期时间减法在 PowerShell 中不起作用 - 赋值与相等运算符

    今天 2017 05 29 我在 Windows 7 Enterprise 上使用 PowerShell 5 0 10586 117 并运行以下命令 缩写 dateOfLicense 2017 04 20 dateOfToday 0 yyy
  • Google Analytics 4 (gtag js)“set”命令不向事件添加数据

    我正在尝试使用 set 命令将数据添加到我通过 javascript 在 GA4 中发送的每个事件 https developers google com tag platform gtagjs reference set 从这些文档来看
  • 如何使用powershell选择没有扩展名的文件

    我的驱动器上有很多目录和文件 其中一些已损坏并且没有文件扩展名 我想删除所有没有扩展名的文件 我努力了gci where extension eq and gci where extension eq 以及这些的变体 但最终在驱动器上什么也
  • 如何使用 RichTextBox 消除烦人的蜂鸣声

    我在新窗体上放置了一个 RichTextBox 控件并启动了该项目 所以 RichTextBox Text 每次我按向上或向下键时 我都会听到烦人的蜂鸣声 如何摆脱这个问题 在 KeyDown 方法中使用 e SuppressKeyPres
  • 推荐的预缓存负载大小?

    代表某人公开提问 回答 我正在使用 Workbox 生成一个服务工作线程 为我的渐进式 Web 应用程序预缓存资源 我不愿意预缓存大约 20mb 的缩小版 JavaScript 是错误的吗 显然 它很大 20mb 似乎太多了 我的计划是只预
  • Bootstrap 模态主体最大高度 100%

    我有一个自定义尺寸 80 高度宽度 的引导模式主体并且它滚动 主体内容将在某些尺寸的屏幕上溢出 有2个问题 我无法将最大高度设置为 100 因为这将是整个文档的 100 而不是容器的最大高度 而容器的最大高度正是滚动正常工作所需的 如果在模
  • 如何在Android设备中获取设备日历事件列表?

    我想在 Android 设备上获取过去 7 天的日历事件 我是初学者 所以请告诉我一步一步的解决方案 仅获取和读取日历 而不是更新和删除 有人帮助我吗 我在下面使用了代码 public class Example public static
  • NLTK - 没有名为语料库的模块

    使用 PIP 安装 NLTK 和 NLTK DATA 后 我运行python然后我输入从 nltk corpus 导入 cmudict它有效 但是当我写了这样的脚本时 from nltk corpus import cmudict d cm
  • 如何使用 Cron 选项卡每晚进行 MySQL 数据库备份并将其放入 Amazon s3 中?

    我在 Rackspace 中有一台服务器 并且我已经在每天晚上运行一个 cron 作业来处理一些东西 一些与帐户相关的操作 每个午夜都会向我发送电子邮件 我的应用程序是在 groovy on grails 中 现在我想在每个午夜备份 mys
  • 将 Pandas DataFrame 中的无效值替换为 None

    有没有什么方法可以替换值None在 Python 中的 Pandas 中 您可以使用df replace pre post 并且可以将一个值替换为另一个值 但是如果您想替换为None值 如果你尝试 你会得到一个奇怪的结果 这是一个例子 df
  • C# 错误“尝试读取或写入受保护的内存”或“外部组件引发了异常”

    我有一个 C 程序 目标框架 NET 4 0 它调用 COM 对象 非托管代码 所有对象都得到正确管理 不再需要时销毁 等等 我也有一些异常处理程序 没有自定义异常的 try catch 块 然而 有时这个程序会崩溃 但大多数时候都可以工作
  • 更改 Chart.js 工具提示插入符位置

    我使用创建了一个圆环图Chart js2 5 我遇到的问题是工具提示 当我将鼠标悬停在图表上时 会显示一个工具提示 其中的插入符号始终位于左侧或右侧 如下所示 我想更改插入符位置 使其始终显示在底部 那可能吗 这是我的图表代码 var my
  • PowerShell 计时器/秒表精度

    我发现 System Diagnostics Stopwatch 类似乎存在可测量的不准确性 即使在很短的时间段 即 20 秒 内也是如此 我的进程显示 编码为运行 20 秒的进程的运行时间为 20 3 秒以上 elapsed System
  • TFS 2010 - 用于转换为分支的命令行

    TFS 公开了一个涵盖大部分领域的命令行实用程序 不过 我正在创建一个脚本 它将在指定的项目中创建文件夹和分支结构 为此 我需要将我的卡车转换为分支 然后从那里进一步创建分支 我找不到执行此操作的命令 到目前为止我已经找到了这个link它描
  • 如何在反应中使用gapi

    我想使用gapi从google访问people api资源 我尝试了很多方法来完成这项工作 但我仍然无法得到任何响应 它没有错误 没有警告 这是我的代码 loadYoutubeApi const script document create
  • Firebase 存储视频流

    我正在开发一个具有视频流功能的应用程序 我正在使用 firebase 数据库和 firebase 存储 我试图找到一些有关 firebase 存储如何处理视频文件的文档 但找不到太多 文档中提到 Firebase 存储与其他谷歌应用服务配合
  • 获取Java中当前运行的所有线程的列表

    有什么方法可以获取当前 JVM 中所有正在运行的线程的列表 包括线程 not由我的班级开始 是否也可以获得Thread and Class列表中所有线程的对象 我希望能够通过代码来做到这一点 要获得可迭代集 Set
  • 通过ADB Android发送AT命令

    我的工作任务是调查是否可以通过 ADB shell 向 Android 设备发送 AT 命令 到目前为止 我已尝试回显 AT 命令 但它会将它们作为普通字符串传递 任何帮助请任何人 请尝试这个 echo e AT CFUN r n gt d
  • JSF 2.0 部分状态保存似乎不起作用

    我正在评估在高流量网站中使用 JSF 的可能性 有人告诉我 在 JSF 2 0 中 组件树不存储在会话中 并且一旦组件树被修改 只存储增量 这是我正在查看的页面