问题标签 [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.

0 投票
1 回答
2591 浏览

ajax - JSF:ui:include 和(损坏的)视图范围

我有一个 JSF 页面,其中包含一些常见元素,然后是 4 个根据各种用户操作动态加载和包含的部分。我有封装各种包含功能的 bean,结构如下所示:

在主视图页面上,每个包含都通过一系列条件渲染的 h:panelGroups 包含在 BalusC 在这些问题中的描述中:

https://stackoverflow.com/a/9897016/945403

https://stackoverflow.com/a/7113961/945403

视图范围 bean 包含一些关于用户活动的当前状态、他们当前正在查看的项目等的各种视图信息。

每个包含的视图都通过 ajax 和非 ajax 帖子执行各种任务。我的问题是某些面板中的某些操作似乎会导致视图范围被破坏,并且似乎没有押韵或理由。对于下面概述的错综复杂的工作流程,我提前道歉,但我会尽量做到清楚。

如果我在 include3.xhtml 中执行 ajax 操作,它们只会在 include 中呈现组件,我可以整天这样做,并且视图范围仍然存在。如果我执行非 ajax 帖子,刷新将更新(并可能添加以前未渲染的)include4.xhtml。然后,我可以随后在任何其他包含中执行操作。

如果我在 include1.xhtml 中执行一个 ajax 操作,它只调用它自己的支持 bean 中的方法,并且只更新它自己的组件,那么视图范围仍然存在。如果我执行调用 include3Bean 中的方法并更新包含 include2.xhtml 和 include3.xhtml 的 div 的 ajax 操作,则视图范围仍然存在,只要我继续在 include1.xhtml 中执行操作,视图范围就会保留。一旦我尝试在另一个包含中执行另一个操作,视图范围就会被破坏。

在这一点上,我对自己认为问题一定在于我正在更新不同的包含,而不是从中调用操作。但这似乎不是问题(或至少是唯一的问题),我现在将解释。

include2.xhtml 有一个 ajax 动作,当它被触发时,调用 mainViewBacking 中的一个方法并更新包含 include2.xhtml 和 include3.xhtml 的 div。如果我继续执行此操作,或在 include2.xhtml 中执行任何其他操作(包括非 ajax 操作),一切都会按预期工作并且视图范围仍然存在。但是,如果我随后在 include3.xhtml 中执行操作,则视图范围被破坏。奇怪的是我可以在 include1.xhtml 中执行操作,只要我愿意,他们将继续访问视图范围,但如果我尝试返回并在 include2.xhtml 或 include3 中执行操作。 xhtml,视图范围再次丢失。

我在这一点上有点卡住了,我什至不知道如何去找出问题所在。我假设一些关于刷新(以及删除或添加)包含的内容会导致视图范围丢失,但从之前链接的问题来看,这似乎不是问题,因为 ui 的实际 src 值:includes 不是动态生成的。而且我确实关闭了 mainview.xhtml 的部分状态保存。

这些动态显示的 ui:includes 有什么东西会破坏视图范围吗?

0 投票
0 回答
3512 浏览

ajax - View Scoped bean 复制中注入的 Session Scoped Bean

我有一个ViewScopedbean,在这个 bean 中我正在注入一个SessionScopedbean。在这方面可以找到很多信息,并且非常简单。

会话 bean

看豆

小面

这里有趣的是,test通过单击复选框会更新,但test2不会。会话范围的变量永远不会更新。刷新页面时,我丢失了所有信息#{displayResults.followingBean.followingThese}

编辑:会话变量不会在 ajax 调用中更新,只有“注入的会话变量”

如果我更改javax.faces.STATE_SAVING_METHODserver上面的代码有效,但是当 on 时client,什么都没有。我丢失了通过ViewScopedbean 保存的所有“会话”信息。

编辑 忘了提。在 Glassfish 3.1.2.2 上使用 JSF (Majorra) 2.1.6(刚刚更新了所有内容,希望这可以解决问题)。

编辑#2 使用上面的代码添加了完整的导入列表。

添加的信息RequestScoped在这里和那里尝试了一些东西之后,如果我将接收 bean 设置为OR ,我正在寻找的功能没有问题SessionScoped。设置为 时不起作用ViewScoped。这一切都很好而且很花哨,但是我需要视图范围内的其他功能,将我的 bean 设置为会话范围是没有意义的。

任何帮助表示赞赏。

编辑 3

这已被记录为JIRA上的错误

0 投票
1 回答
1828 浏览

java - Java EE 6 - ViewScoped 和会话 bean 中的 @PreDestroy 从未调用

正如我在本主题中所写,我需要在用户关闭或更改页面时调用一些操作。我以为我可以@PreDestroy在我的视图范围内使用 bean,但它永远不会被调用(即使会话过期)。这是一个错误吗?我使用 Glassfish 3.1.2。

用户离开页面时如何调用bean方法的任何其他建议?javascript是个window.onunload好主意吗?

0 投票
1 回答
1086 浏览

jsf - 添加动态表单域时出错

我正在尝试将动态表单字段添加到 jsf 表单。但即使遵循简单的代码也会出错。

测试.xhtml

字段.java

包装实体;

公共类字段{

}

testBean.java

我上面的代码给出了“java.io.NotSerializableException:Entity.Field”错误。

如果我使 Field 类 Serializable 它再次给出错误。

我的简单代码有什么问题?提前致谢

0 投票
5 回答
24874 浏览

spring - Spring中的JSF视图范围

@ViewScopedSpring 3.0 中是否有类似 JSF 的范围?我有一个使用 JSF+Spring 的应用程序,其中支持 bean 由 Spring 管理。我在 Spring 中没有找到像 JSF wiew 范围这样的范围。我看到博客Porting JSF 2.0's ViewScope to Spring 3.0,但它对我不起作用。

这是我对自定义 Spring 范围的尝试:

application-context.xml

0 投票
1 回答
2340 浏览

jsf - 会话结束时销毁视图范围的 bean

我的问题与这个(可能还有其他)有关:

@PreDestroy 从未调用过 @ViewScoped

如那里所述,没有简单的解决方案可以在导航时销毁视图范围的 bean,并且会话到期时似乎也是如此。

释放(调用方法)JSF 视图范围 bean 的非平凡方法@PreDestroy会是什么样子,或者更具体地说,一旦会话到期,会是什么样子?

我在 GlassFish 3.1.2 上使用 Java EE 6 和 Mojarra 2.1.x。

0 投票
1 回答
4866 浏览

jsf-2 - 链接的 ViewScoped bean 导致内存泄漏

在 JBoss 7.1.1 上的 JavaEE6 项目(EJB3、JSF2)中,@ViewScoped bean 似乎存在内存泄漏。上树的日子我花时间研究这个问题。所以我创建了一个带有两个页面的简单项目,以保证在离开@ViewScoped bean 的第一页之后将被释放。

树豆.java

第一个.xhtml

第二个.xhtml

系统输出:

在我向其他 @ViewScoped bean 添加依赖项之前,所有的想法都很好

树豆.java

树节点Bean.java

在那之后,没有一颗豆子被释放出来。有人知道如何处理吗?这是一个错误还是可能在某处配置?

0 投票
3 回答
3757 浏览

jsf - 如何修复“目标无法访问,标识符 'bean' 解析为 null”?

我正在使用 JSF 2.1.7 和 Primefaces 3.2、CDI 和 Apache MyFaces CODI 来访问 @ViewScoped。

一切工作正常,但是当我通过 ui:param 将 bean 传递到另一个页面,然后尝试通过 ap:ajax 请求专门使用该 bean 时,我收到消息,“目标无法访问,标识符 'bean' 解析为无效的”

然后在 page.xhtml 我尝试这样做。

对 bean.simpleModel 的第一次调用正确解析。对 bean.onMarkerDrag 的 ajax 调用没有。

我对formBean 的声明是@Named("formBean"), @ViewScoped。

有任何想法吗?

0 投票
0 回答
1256 浏览

jsf-2 - JSF 2 DataTable with multiple headers on dynamic columns

I'm developing a data-centric Web Application using JSF 2.1 and PrimeFaces 3.4.
As a result of a specific query, I must display the results in a bi-dimensional data table with some dynamic columns (imagine a sort of Pivot-table).
Currently I use a PrimeFaces <p:dataTable> with some standard <p:column> tags and a <p:columns> for the dynamically-created columns. The table is backed by a @ViewScoped Managed Bean. It works fine, but:

  • Just like a pivot-table, I need to display multiple headers too, in order to group some fields together. Unfortunately, <p:columns> is not compatible with <p:columnGroup> (nor with many other features like resizing etc.)
  • I need to display some custom sub-total rows (is there a way to do this?)

I was thinking about populating the entire <p:dataTable> programmatically, but I can't use binding="#{...}" with a @ViewScoped bean due to JSF issue 1492.

0 投票
1 回答
112 浏览

jsf - 在 JSF 中保存视图

我有一个关于检索 JSF 页面的视图状态的问题。我有一个应用程序,用户可以在其中搜索列表中的人员,当用户按下“显示”按钮时,同一个 JSF 页面将填充各种人员的列表。现在,当我选择其中一个人时,将显示另一个 JSF 页面,其中包含有关该人的更深入和详细的信息。现在在该页面中显示了一个“取消/中止”按钮。我想要完成的是,当我按下特定的“取消/中止”按钮时,页面应该被重定向并导航回 JSF 页面,并显示列表,因此以某种方式应该存储“视图状态” (我只假设)但我不知道该怎么做...... 我只是想检查是否有人能够以某种方式解决此类问题..?(上面提到的JSF搜索页面被声明为viewscoped作为附加信息)

谢谢大家的帮助。。