问题标签 [view-scope]
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.
jsf - 为什么 @PostConstruct 回调每次都会触发,即使 bean 是 @ViewScoped 的?JSF
我在页面上使用数据表并使用绑定属性将其绑定到我的支持 bean。这是我的代码:-
这是我的豆子:-
请告诉我为什么每次单击按钮时@PostConstruct 都会触发?只要我在同一页面上,它就应该只触发一次,因为我的 bean 是@ViewScoped。此外,如果我删除绑定属性,那么一切正常,@PostConstruct 回调只触发一次。那为什么每次我使用绑定属性时?我需要绑定属性,并且只想执行一次初始化任务,例如从 web 服务获取数据等。我应该怎么办?我应该在哪里写我的初始化任务?
jsf - @ViewScoped 托管 bean 在回发期间多次加载
我在 jsf facelet 上有一个日历、编辑器、fileUpload 和一个 dataTable primefaces 控件。
代码如下,
和@ViewScoped Bean 如下,
我的问题是 SearchScriptActionBean 在加载表单和上传文件时加载了很多次。我想保留 bean 的旧值。前任。scriptFiles(List),添加上传文件的地方。并且 filsList (dataTable) 没有得到更新。
jsf - 如何在 JSF 1.x 中创建视图范围的 bean?
我在一个网页中有 2 个链接,一品脱链接到 appserver/?dept=1,链接二是 appserver/?dept=2。然后我有一个 JSF 阶段监听器,在那里,我可以获取后端 bean 并将 dept1 或 dept2 设置为 bean 参数,以便呈现不同的部门内容。如果用户从上面的网页启动 2 个窗口,dept1 窗口的内容可以转到 dept2 窗口。都搞砸了。(注意,如果您从桌面快捷方式启动浏览器,输入上面的链接,没问题,因为将创建 2 个会话,创建 2 个不同的后端 bean 实例)。
关键原因是 JSF 将 bean 存储在会话中,因此来自同一个父窗口的 2 个窗口共享相同的会话 id(cookie),然后使用相同的后端 bean 类实例。在渲染结果时,结果可以转到任一窗口。
我怎样才能避免这种窗口交叉内容的情况?这似乎是很久以前就应该解决的基本 Web 应用程序问题。或者我可能会做错事。
我试过接缝转换,没有帮助,JSF2.0有视图范围,CDO。剂量可以帮助吗?由于各种原因,我们还不能迁移到 JSF2.0。我正在使用 JAVA6、Tomcat6.20、Icefaces。任何帮助都是适当的。
jsf - @ViewScoped 在每个回发请求上调用 @PostConstruct
这似乎不对。我正在清理我的代码,我才注意到这一点。每个 ajax 请求都在触发构造函数和@PostConstruct
我的@ViewScoped
bean。即使是简单的数据库分页也会触发它。
我知道这比每次请求@ViewScoped
都更长,@RequestScoped
并且不应该重建它。只有在通过 GET 重新加载完整的页面后。
jsf - #{param} 上的@ManagedProperty 在@ViewScoped 中不起作用
我的豆子有这个:
目标 Facelet 有这个:
通过测试,我注意到了这一点,@ManagedProperty
并且@PostConstruct
只能使用@RequestScoped
bean。
对于@ViewScoped
bean,我发现我必须这样做FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("id")
才能获取id
参数的值。
这是获取请求参数值的唯一方法@ViewScoped
吗?
有什么想法吗?
jsf - JSF 2.x @ViewScoped 托管 bean 线程安全吗?
我已经在这个问题上搜索了几个小时没有评估。
WELD 文档和 CDI 规范对所提供范围的线程安全性非常清楚。
例如:
应用范围 - 不安全
会话范围 - 不安全
请求范围 - 安全,始终绑定到单个线程
对话范围 - 安全(由于 WELD 代理序列化来自多个请求线程的访问)
我在 JSF 2.x 定义的视图范围内找不到任何东西。
它与对话范围大致在同一个桶中,因为尽管它绑定到单个视图/用户,但多个请求很有可能同时到达范围。我不知道 JSF 实现是否序列化了从多个请求对 bean 的访问。
任何人都知道规范或 Morraja/MyFaces 实现可以解决这个问题吗?
jsf - ViewScoped bean 根据每个请求构建...第 99 部分
啊……这似乎有一百个答案,我还没有找到适合我的答案,所以我想我真的会再问一次。这是我的场景:
从技术上讲,我的网站只有一个页面,其内容被换出,而不是您导航到的多个页面。起点是这个块:
resourceInclude.xhtml 包含我的 css 文件:
main.xhtml 是视图:
它由三个h:panelGroup
s 组成。第一个是一组四个通用导航链接,每个链接都会更改viewSelector.modeName
用于包含第二个内容h:panelGroup
的值<ui:include src="#{viewSelector.modeName}-view.xhtml" />
。我已经为这个例子去掉了这个,所以每个视图基本上都是这样的:
第三个h:panelGroup
是所有消息的页脚,用于调试出错的地方。
无论如何,每次我单击其中一个导航链接时,都会调用 viewSelector bean 的构造函数。这就是我的 viewSelector bean 的样子:
我知道我一定是以错误的方式做某事,否则我错过了关于 JSF 如何工作的核心内容。任何输入?
jsf - @ViewScoped 在每次回发时创建新实例
我有以下托管 bean。但是每次我在调用updateFileList 时回帖到同一个bean 时。我得到了一个新的 FileDAO 实例。
我怎样才能防止这种情况?在托管 bean 中拥有 DAO 是否安全,如果不是,我可以进行哪些更改来改进它。
谢谢!
ajax - 即使已经实例化了 ManagedBean(例如在 AJAX 调用上),也会调用 @PostConstruct 方法
我有一个@ViewScope ManagedBean 和一个@PostConstruct 初始化方法。此方法在创建新实例时调用,但也在每次 ajax 调用时调用。为什么会这样?
在 AJAX 调用中,会调用并执行 init-Method,但看不到任何更改。例如,如果我在 init-Method 中更改了一个属性,这仅在实例化时可见,而对于 AJAX 调用不可见。对于 AJAX 调用,值更改不会在 @ViewScoped Bean 中持久存在。
谁能说出为什么会这样?我怎样才能改变这个?
serialization - 打开客户端状态保存时,ViewScoped bean 是否序列化到页面?
我们打开了客户端状态保存并使用 ViewScoped 支持 bean。当打开客户端状态保存并且我们使用 ViewScoped bean 时,ViewScoped bean 是序列化到页面还是说存储在会话中,带有序列化到页面的令牌/密钥(以便页面可以调用如果页面回发到自身,则来自会话的 bean)
这里的一个问题可能是,如果它被序列化,那么我们可能想要担心在 ViewScoped bean 上不存储大型实例变量,因为它被序列化到页面并通过线路来回。