问题标签 [state-saving]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
6908 浏览

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

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

这是我正在查看的页面:

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

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

0 投票
1 回答
53459 浏览

java - 为什么 JSF 将 UI 组件的状态保存在服务器上?

  1. JSF 将在服务器端保存 UI 组件的状态直到什么时间点以及何时从服务器内存中删除 UI 组件的状态信息?当应用程序上的登录用户浏览页面时,组件的状态是否会继续在服务器上累积?

  2. 我不明白在服务器上保持 UI 组件状态有什么好处!?直接将经过验证/转换的数据传递给托管 bean 还不够吗?我可以或应该尽量避免吗?

  3. 如果有数千个并发用户会话,这不会在服务器端消耗太多内存吗?我有一个应用程序,用户可以在其中发布有关某些主题的博客。这个博客的规模相当大。当有回帖或查看博客的请求时,这个大页面数据是否会保存为组件状态的一部分? 这会占用太多内存。这不是一个问题吗?


更新1:

现在,不再需要在使用 JSF 时保存状态。可以使用高性能的无状态 JSF 实现。有关详细信息和讨论,请参阅此博客此问题。此外,在 JSF 规范中包含一个未解决的问题,即为JSF 提供无状态模式的选项。(PS如果这对您有用,请考虑为thisthis的问题投票。)


更新 2 (24-02-2013):

Mojarra 2.1.19推出无状态模式的好消息!

看这里:

http://weblogs.java.net/blog/mriem/archive/2013/02/08/jsf-going-stateless?force=255

http://java.net/jira/browse/JAVASERVERFACES-2731

http://balusc.blogspot.de/2013/02/stateless-jsf.html

0 投票
2 回答
9940 浏览

jsf - 为什么 JSF 保存组件树状态?

托管 bean 状态和组件树状态之间似乎存在差异。您可以通过使用@RequestScoped@SessionScoped之类的注释来控制托管 bean 状态,但您似乎无法选择是否保存组件树状态(尽管您可以选择是否保存在服务器或客户端)。

似乎组件树状态应该只在单个请求期间作为临时数据结构需要,以帮助处理请求。它应该为每个请求从头开始重建。使用 JSF 2.0 部分状态保存使情况变得更好,因为只保存了表单数据,但我不明白为什么从前一个请求中获取表单数据是有用的。

如果您的应用程序仅使用请求范围托管的 bean,那么在请求之间保存组件树状态尤其没有意义。即使您的应用程序具有会话范围托管 bean,我也会假设托管 bean 将保持状态,并且组件树仍然不需要在请求之间具有任何状态。

0 投票
1 回答
2766 浏览

java - 扩展 UIComponentBase 时如何保存状态

我正在创建一个复合组件,它将包装一个数据表以实现非常简单的分页。我需要在 ajax 请求之间保存状态(当前页码)。

我尝试在我的 FacesComponent 中创建字段,但我发现它们在 JSF 生命周期中被清除了:

我似乎无法在任何地方找到执行此操作的简明指南!创建复合组件时如何在请求之间保存状态?

0 投票
1 回答
539 浏览

jsf - JSF 2 - 回发时不保留动态添加的组件 ID

我在组件中有一个方面,我在其中使用动态添加组件

但是在回发时,当我遍历这个列表时,我意识到组件存在,但它们的 id 与我之前指定的不同。(更具体地说,这些 id 的形式为“j_id9、j_id10”等)

我在 StateManagementStrategyImpl 中调试了一些代码,并意识到它们在保存视图时故意不存储组件 ID。

我的问题是,为什么 JSF 不存储组件 ID?

0 投票
1 回答
242 浏览

java - Client side state saving, any way I could see state data sent to client?

In order to decide a better state saving method for my JSF app from amongst server side & client side saving, I wanting to see the saved state data when the state is saved to client.

I need to have an idea of how much data is transferred back & forth between the requests & if I reduce that to keep the advantages of client side saving(like all time responsiveness & no dead app after view expires)! Could I see this saved state in firebug plugin in firefox ? How ?

0 投票
1 回答
3790 浏览

java - JSF 状态最初保存到服务器和会话超时转移到客户端?

是否有任何状态保存方法可以允许 JSF 应用程序在服务器上初始保存状态数据,但是在会话过期时间间隔之后,该状态被传输到客户端,这样即使服务器上的会话超时和内存更好,应用程序也始终响应在服务器上管理?

或者有什么方法可以实现?但我希望这应该成为 JSF 规范的一部分!


编辑

在 BalusC 的建议下,我对无状态 JSF原则及其当前实现印象深刻。如果这里的其他人也对将无状态 JSF 添加到 JSF 规范感兴趣,请考虑查看或投票这个问题

无状态 JSF 为某些收益提供了巨大的性能提升,例如无法动态创建视图(例如通过绑定、JSTL 标记等)或修改它。


无状态 JSF 操作模式对于高负载应用程序和架构非常有用:

https://web.archive.org/web/20140626062226/http://industrieit.com/blog/2011/11/stateless-jsf-high-performance-zero-per-request-memory-overhead/#comment-4

雅各布以前曾建议过: http ://weblogs.java.net/blog/jhook/archive/2006/01/experiment_goin.html

这将有助于 JSF 摆脱“速度慢且占用内存”的污名,并有助于跟上当前的技术趋势(无状态架构)。

0 投票
1 回答
2091 浏览

jsf - java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:com.sun.faces.renderkit.ServerSideStateHelper.getState 处的 -1

当我在没有它的情况下使用此代码时,<p:tab>它会按预期工作,

但是当我开始使用时<p:tab>,它会引发以下异常:

这是如何引起的,我该如何解决?

0 投票
1 回答
2086 浏览

jsf-2 - JSF 复合组件 - 尝试保存状态时的奇怪行为

我正在使用 Glassfish 3.2.2 和 JSF 2.1.11

我正在尝试创建一个复合组件,该组件将字符串和最大字符数作为参数,然后仅显示最大字符数,但它旁边会有一个“更多”链接,单击时将将文本扩展至全长,然后在其旁边有一个“更少”链接,以将其恢复为最大字符数。

我看到一些奇怪的行为,所以我想知道我是否做错了什么。

这是我的复合组件定义:

这里是 Java 组件:

不幸的是,每次调用 toggleExpanded 函数时,expanded 总是假的。

但是,如果我将复合组件更改为以下内容,则它可以工作。

如果我在 toggleExpanded 函数中放置一个断点,它只会在“更多”链接而不是“更少”链接上被调用。所以问题是为什么当我点击“less”链接时它没有被调用?这段代码不应该等同于上面的代码吗?

有没有更好的方法来保存组件中的状态?

0 投票
1 回答
438 浏览

iphone - 导航栏上的状态保存、导航控制器堆栈保存和手势识别器

我正在像这样加载我的视图控制器:

在我的堆栈的根视图控制器上,我在导航栏中添加了一个手势识别器。

但是,如果我将某个视图控制器推到顶部,它将不会加载此手势,因为viewDidLoad不会调用根视图控制器,并且如果我访问它的viewControllers属性,UINavigationController则返回 nil。

任何想法如何继续这个手势?谢谢!