问题标签 [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 - 如何从 Servlet 访问 @ViewScoped 托管 bean?
我想访问 Servlet 中的视图范围托管 bean。
我搜索了类似的问题并得到了这些问题:
如何从使用的视图范围获取bean FacesContext.getCurrentInstance()
,在Servlet中不适用,因为它应该给出空结果
JSF - 按名称获取托管 bean,它处理所有其他范围但不处理视图范围
我会认为这是不可能的,是吗?
有一个简单的解决方案可以将该 bean 范围更改为会话范围,但这是最后一次机会,因为我担心内存消耗。
我的最终需求如下:managebean 包含一些显示在 dataTable 中的数据。同一页面应包含这些数据的图表表示形式的图像(强制性)。图像可以由 Servlet 生成,但它需要访问数据或从数据库重新加载它们。
我也尝试过<p:graphicImage>
PrimeFaces 2.X,但它与 viewscope bean 不兼容。有什么建议吗?
ajax - JSF:只能使用带有 ajax 命令的 sessionscoped 视图link
场景:我想通过使用 commandLink 使用 AJAX 在 JSF 中部分执行和呈现表单的一部分。由于这将通过 AJAX 完成,据我了解,ViewScoped 应该在 AJAX 请求之间保存页面中组件的值。
我在下面创建了一个示例,其中我有一个输入框,其中输入了订单名称,按下 commandLink(标记为“输入订单”),来自 inputText 的订单名称被添加到名为“订单”的 ArrayList 中,并且“订单”显示在 CommandLink 下方的数据表中。
来自 CommandLink 的 AJAX 请求执行将字符串值添加到“orderName”变量的 inputBox。AJAX 请求向 processDataTable() 方法发送一个 ActionEvent,该方法获取“orderName”值并将其添加到“orders”列表中。然后“orderName”为空。然后,AJAX 请求呈现带有为空的“orderName”的 inputText 组件,以及显示所有先前输入的订单的 DataTable,包括来自该请求的新添加的“orderName”。
问题:如果我使用的是 SessionScoped bean,则代码有效,但如果我使用 ViewScoped bean,则代码无效。我在代码中添加了 System.out.println() 以查看发生了什么。如果我使 bean SessionScoped,那么一切都按计划进行。inputText 值是通过 set 方法设置的,processOrder() 方法将“orderName”String 添加到“orders”List 中,重新渲染DataTable 以显示这个添加的名称。...
对于 ViewScoped bean,“orderName”值设置为 InputText 组件的值,但在 ProcessOrder() 方法内部为“null”,将“null”添加到“orders”列表,DataTable 没有除空外显示。
如果我在添加“orderName”之前使用 orders.add("Some Name") 在 processOrder() 中手动添加 orderName,则“orders”将保留 {"Some Order", "null"} 并更改 Orders仍然没有使用 AJAX 重新渲染。
所有都适用于 SessionScoped bean 而不是 ViewScoped bean?我还尝试了使用 CommandLink 而不是 ActionListener 的 Action 属性,同样的故事.. 适用于 SessionScoped 但不适用于 ViewScoped。
我在这里只能想到两件事,1)我错过了 AJAX 和 CommandLink 如何协同工作的关键点,以及 ViewScoped 应该如何工作(很有可能);或 2) 出于某种原因,我如何使用 CommandLink 提交 AJAX 调用,每次单击它都会刷新页面,从而删除“订单”列表的先前值。但是,这仍然不能解释为什么如果我手动将订单输入到列表中,它仍然不会在 AJAX 请求中使用 ViewScoped bean 呈现,而是会使用 SessionScoped bean。
请帮忙!!??
这是我的代码:
这是我的 jsf 页面:
java - ViewScoped NPE 与 Richfaces 的 mediaOutput
我在处理包含<rich:fileUpload>
+ <a4j:mediaOutput>
组件的页面时遇到了托管 Bean ViewScoped 的问题。
当我尝试上传图像时,我总是得到一个空指针异常,上传完成后将显示(=渲染)。我的页面与 Richfaces 组件的用例非常相似:http://showcase.richfaces.org/richfaces/component-sample.jsf?demo = fileUpload&skin=blueSky
这是异常的堆栈跟踪:
Servlet.service()" 为 servlet FacesServlet 注入一个通用异常:com.sun.faces.mgbean.BeanManager$ScopeManager$ViewScopeHandler.getFromScope(BeanManager.java:563) 处的 java.lang.NullPointerException [jsf-impl-2.1. 7-jbossorg-2.jar:] 在 com.sun.faces.mgbean.BeanManager$ScopeManager.getFromScope(BeanManager.java:477) [jsf-impl-2.1.7-jbossorg-2.jar:] [...其他一些痕迹...]
我的代码是这样的:
我更改了范围,替换@ViewScoped
为@SessionScoped
,它可以工作。但是,我不想要这个范围,因为我不关心将我的信息保存在我的托管 bean 中。另外,我在这里看到了一个快速修复但仍然很脏:https :
//community.jboss.org/thread/168523 结合 SessionScoped 和 ViewScoped,这比我的第一次修复要好。
但我真的很想用只是,@ViewScoped
但也许它没用,我不知道。所以如果你能解释我为什么会得到这个异常,我可以找到一个解决方案。
提前致谢。
jsf-2 - JSF - ViewScope - 它只适用于 AJAX 调用?
我正在使用 JSF 2.1 和 PrimeFaces 3.5,我对 ViewScope 范围有一些疑问。
当我使用相同的页面时,这个范围应该可以工作,对吧?但是,每次我刷新页面时,容器都会创建另一个我的 ManagedBean 实例,我会丢失所有数据。为什么?顺便说一句,如果我使用 Ajax,它就可以工作。我对吗?
jsf-2 - JSF ViewScope - 在操作上返回 null 不会更新视图
我在 ViewScope 模式下有一个托管 Bean。因此,当我从此托管 Bean 调用某些操作时,我的页面不会更新。我看到我的操作被很好地调用并返回 null(viewscope 工作流程正常)。
那么,我做错了什么?
如果我使用 Ajax 重新呈现页面,它可以正常工作。
编辑:
我的版本是:
JSF 2.1.14 和 Primefaces 3.4.1
我的代码:
我的页面:
在我的屏幕上,状态变量不会改变。而且,是的..这个动作被称为OK。一些小费?
jsf-2 - JSF 2.0 @managedproperty 不能从一个 viewScoped bean 到另一个 viewScoped bean
我有一个@viewScoped bean(比如bean1),它有一个inputText 作为属性。从facelet 中,我正在设置这个inputtext 字段的值。但是,在另一个 facelet(其托管 bean 说bean2在@viewScoped中)也被加载时提交操作之后,我需要检索 bean1 inputText 值但我无法检索。我知道在 viewscoped bean 中状态丢失了一次我们移到下一个视图,但有没有办法检索值?因为我需要在下一个 facelet 中显示值......顺便说一下,我正在使用 ajax,所以 bean 必须是 viewscoped
我什至在 bean2 (@viewScoped) 中尝试了以下代码。但下面显示的 sysout 始终为空
两个 bean 都必须在 @viewScoped 中。有没有办法可以检索 bean 1 到 bean 2 的值?提前致谢
jsf - 当我将 @SessionScoped 更改为 @ViewScoped 时,我总是遇到 JDOM 异常
我想将一个jsf页面@SessionScoped的范围更改为@ViewScoped,但我总是遇到这个异常,我不明白为什么。我检查了构建路径和依赖项似乎都很好。堆栈错误:
有人可以告诉我如何避免/解决这个问题?
java - 跳过 ViewScoped bean 中的 BeanValidator,其中 f:param 嵌套在 p:commandButton 中
我正在使用 BeanValidator(扩展 javax.faces.validator.BeanValidator),在某些情况下我需要阻止验证,因为某些操作不需要它。我的验证器检查请求参数映射中是否存在值为“ignore_validation”的“validationBean”参数,如果找到,则跳过验证。
我在ViewScoped托管 bean 中很难做到这一点。通过执行以下操作单击某些按钮时,我试图跳过验证:
在我的 BeanValidator 中,我试图获取参数并跳过验证:
但是,上面的“validationBean”变量为空,即没有找到参数。因此,正在执行验证。
为什么请求参数映射中没有参数?这个概念有什么问题吗?在某些情况下是否有其他推荐的方法来跳过 BeanValidator 验证?
我正在使用 primefaces 3.2.4、Mojarra 2.1.2 和 Tomcat 6.0.36。
谢谢!
jsf - view scoped backing bean的内部转换器怎么办
JSF 中视图范围的支持 bean 的另一个问题。我在视图范围内的支持 bean 中创建了一个内部类。那个内部类是转换器。我需要内部类,因为我必须从我的支持 bean 访问一些字段(在这种情况下选择一个项目的列表)。突然间,我发现每次请求后都会调用我的支持 bean 的@PostConstruct
方法。经过一番检查,我意识到转换器属性是问题所在,经过一些谷歌搜索(一如既往)在BalusC 的博客上找到了这个原因。
所以,我的问题是如何让我的转换器正常工作,并且还有我的转换所需的数据列表?
jsf - 如何在 JSF 2.0/2.1 中用 CDI 替换 @ManagedBean / @ViewScope
我目前正在使用 RichFaces 评估 Java EE 6 / JSF 2.1。
一个被声明为的bean
- 获取一个 ID 集(准备例如删除操作)。
- 通过 JSF 会显示一个确认弹出窗口。
- 如果用户确认,则调用 delete 方法并删除在步骤 1 中为其存储 ID 的行。
由于 CDI bean 没有 ViewScope,我尝试将 bean 声明为:
现在处理在步骤 3 中失败。因为在步骤 1 中设置的值(检查)不再可用。
我必须使用Conversation.begin()
和Conversation.end()
方法吗?
如果是这样,哪里是调用它们的好地方?