问题标签 [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 - 将 OmniFaces ViewScoped bean 注入 servlet 时出现 ContextNotActiveException
我刚刚将 SessionScoped bean 更新为 OmniFaces (1.6.1) ViewScoped。一切似乎都正常工作,除了当我的支持 bean 被注入我用于处理 ajax 请求的 Servlet 时,我得到以下异常:
需要考虑的一些事项:
1) 我必须将支持 bean 注入 servlet 的原因是因为我使用的是 jQuery 的 DataTables 插件,该插件(用于服务器端处理表)需要 ajax 请求来检索表数据。所以基本上我不能使用 Primefaces<p:remoteCommand..>
或类似的东西。
2)据我所知,没有任何额外的 GET 请求会破坏和重新创建支持 bean。
还有其他可能导致此异常的原因吗?另外,如果这不能完成,是否有另一种方法来实现我正在做的事情?
jsf-2 - ViewExpiredException:找不到保存的视图状态:在 JSF 中提交表单时
尝试提交表单时出现以下异常。
bean 在@ViewScoped
并且STATE_SAVING_METHOD
设置为server
。我正在使用Primefaces 3.5。
我提到了问题javax.faces.application.ViewExpiredException: View could not be restore but could not resolve the issue。
我尝试设置STATE_SAVING_METHOD
为client
,但结果为
NotSerializableException: org.springframework.dao.support.PersistenceExceptionTranslationInterceptor
。
任何帮助,将不胜感激。
jsf - JSF 的 javax.faces.ViewState 反模式
这个问题可能不符合 SO 规则,但我还是会问。答案可能会帮助其他在 JSF 中苦苦挣扎的人。
我们在两年来最大的项目之一中使用 JSF(MyFaces、PrettyFaces、PrimeFaces 和 Spring)(从 Tapestry 3 迁移而来)。我可以说我们正在从这次迁移中“恢复”到今天。
在我看来,我们的主要错误之一是对 JSF 的 VIEW SCOPE 的误解。JSF 提供了两种基本机制来持久化 VIEW STATE - CLIENT 和 SERVER。我们选择了 SERVER 方法,这是我们的第一个错误,ViewExpiredException
因为从那一刻起就从未停止过。下一个错误是将数据存储在 VIEW SCOPE 上,因为这使我们无法轻松切换到 CLIENT 状态保存方法。
所以我在想是否有一些最佳实践和指导方针,哪些应该和不应该存储在 VIEW SCOPE 上(并因此序列化到 VIEW STATE)。官方文档和规范没有提供。但我得出了一个很好的结论:
- 您应该只在 VIEW SCOPE 上存储您通常(没有 JSF)作为请求参数传递的信息。
当你有一个没有 JSF 的基本 CRUD 应用程序时,你会这样做:
- 通过 POST 参数中的表单值在请求之间保留表单的状态
- 通过查询参数在请求之间保留列表的状态(过滤、排序、分页)
我的结论正确吗?您对在 VIEW SCOPE 中存储什么以及从不存储什么有任何其他指导方针吗?是否有任何组件框架有这样的指导方针?
spring - 使用自定义视图范围多次调用 @PostConstruct
我有一个使用 JSF 2.0、mojarra 2.2.4、Tomcat 7 和 Primefaces 3.5 的项目。我们还使用 Spring 和 Hibernate。
我面临一个关于带@PostContruct
注释的方法的问题。它应该只在创建页面时调用一次,而是调用超过 10 次。当我按下 a 时也会调用<p:commandButton/>
它 SessionScoped Beans 不会发生多个调用,只有我的自定义 ViewScoped bean 才会发生。
这是自定义 ViewScope 实现:
视野范围
}
豆子
XHTML 页面
这是我第一次进入页面时的日志:
应用程序上下文.xml
ajax - 为什么在带有 ViewScoped 的 RichFaces 4.3 组件中多次调用 PostConstruct 方法?
我在 Tomcat 7 上遇到 JSF 2.2、richfaces 4.3.2 的问题。我的页面被注释了ViewScoped
。我显示第一个表格。当我更改值并选择一个特定的值时,我通过 ajax 显示rich:panel
一个a4j:outputPanel
. 在这个a4j:outputPanel
和rich:panel
组件内部,我有一个h:commandButton
执行表单的人。例如,如果字段为空(或其他内容),我想检索表单的消息错误
但是当我点击时h:commandButton
,视图被重新实例化并且@postcontruct
方法被重新执行。它应该只在视图范围内执行一次,我错了吗?
我不希望视图被重新显示,我希望ajaxoutputPanel
在单击h:commandButton
内部时保持显示。(我想在h:messages
我的表单字段旁边看到...没有太多要求:-))
我读到了一些错误……例如,有没有办法在不传递给 SessionScoped 的情况下改变这种行为。
谢谢各位。
在豆...
ajax - 为什么当我们单击显示在 ajax 调用后显示的richfaces 组件中的命令按钮时,视图会被重新实例化?
最初我的问题是:richfaces 4.3.4 是否支持 JSF 2.2 和 ViewScoped?
但现在问题出在标题中。谢谢:)
我正在尝试解决这个问题。当您单击 ajax 调用后显示的 Richfaces 组件中显示的命令按钮时,为什么会重新实例化视图?
看来我并不孤单:[anotherLink],anotherlink 2。
file-upload - (RC 4.3.4)中的rich:fileUpload 组件在Apache Tomcat7 和JSF 2.2 上工作吗?:“无法读取请求序言”
我正在尝试使用richfaces fileupload 组件上传文件。我的 bean 在视图范围内。
我从陈列柜中提取的代码。
bean函数调用:
当我尝试添加要上传的文件时,我得到一个漂亮的错误:-(。欢迎帮助。
11 月 6 日 2013 19:00:43 org.richfaces.request.MultipartRequest25 parseIfNecessary GRAVE:解析多部分请求的异常:无法读取请求序言 org.richfaces.exception.FileUploadException:解析多部分请求的异常:无法在 org.richfaces.request 读取请求序言.MultipartRequestParser.parse(MultipartRequestParser.java:156) 在 org.richfaces.request.MultipartRequest25.parseIfNecessary(MultipartRequest25.java:77) 在 org.richfaces.request.MultipartRequest25.getParameter(MultipartRequest25.java:114) 在 com.sun。 faces.context.RequestParameterMap.get(RequestParameterMap.java:75) at com.sun.faces.context.RequestParameterMap.get(RequestParameterMap.java:56) at java.util.Collections$UnmodifiableMap.get(Collections.java:1280)在 com.sun.faces.facelets.tag.ui.UIDebug.debugRequest(UIDebug. MultipartRequestParser.parse(MultipartRequestParser.java:148) ... 70 更多 11 月 6 日。2013 19:00:43 com.sun.faces.context.flash.ELFlash$PreviousNextFlashInfoManager 解码 GRAVE:JSF1094:无法从传入的 cookie 值 3Xfn_ 解码闪存数据。处理将继续,但闪存不适用于此请求。11 月 6 日 2013 19:00:43 org.apache.catalina.core.ApplicationDispatcher 调用 GRAVE:“Servlet.service()”为 servlet facesServlet 在 com.sun.faces.context.PartialViewContextImpl.createPartialResponseWriter 上出现异常 java.lang.NullPointerException (PartialViewContextImpl.java:485) 在 com.sun.faces.context.PartialViewContextImpl.access$300(PartialViewContextImpl.java:73) 在 com.sun.faces.context.PartialViewContextImpl$DelayedInitPartialResponseWriter。ErrorReportValve.invoke(ErrorReportValve.java:99) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org .apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) 在 org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023) 在 org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol .java:589) 在 org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312) 在 java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) 在 java. util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) 在 java.lang.Thread.run(Thread.java:680) 11 月 6 日。2013 年 19:00:43 组织。进程(AbstractHttp11Processor.java:1023)在 org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) 在 org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)在 java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) 在 java.lang.Thread.run(Thread.java :680) 11 月 6 日。2013 19:00:43 org.richfaces.request.MultipartRequest25 parseIfNecessary GRAVE:解析多部分请求的异常:无法读取请求序言 org.richfaces.exception.FileUploadException:解析多部分请求的异常:无法在 org.richfaces.request 读取请求序言.MultipartRequestParser.parse(MultipartRequestParser.java:156) 在 org.richfaces.request。AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor. java:895) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) at java.lang.Thread.run(Thread.java:680) 原因:java.io.IOException: Request prolog cannot阅读 org.richfaces.request.MultipartRequestParser.initialize(MultipartRequestParser.java:172) 的 org.richfaces.request.MultipartRequestParser.readProlog(MultipartRequestParser.java:270) 的 org.richfaces.request.MultipartRequestParser.parse(MultipartRequestParser.java :148) ... 11 月 6 日还有 34 个。2013 19:00:43 com.sun.faces.context.flash。ELFlash$PreviousNextFlashInfoManager 解码 GRAVE:JSF1094:无法从传入的 cookie 值 3Xfn_ 解码闪存数据。处理将继续,但闪存不适用于此请求。11 月 6 日 2013 19:00:43 org.apache.catalina.core.ApplicationDispatcher 调用 GRAVE:“Servlet.service()”为 servlet facesServlet 在 com.sun.faces.context.PartialViewContextImpl.createPartialResponseWriter 上出现异常 java.lang.NullPointerException (PartialViewContextImpl.java:485) 在 com.sun.faces.context.PartialViewContextImpl.access$300(PartialViewContextImpl.java:73) 在 com.sun.faces.context.PartialViewContextImpl$DelayedInitPartialResponseWriter.getWrapped(PartialViewContextImpl.java:619) 在 javax .faces.context.PartialResponseWriter.startDocument(PartialResponseWriter.java:116) 在 org.
xpages - 如果添加到 DataView,Action Button 的工作方式会有所不同
我有一个按钮,它调用一个对话框,该对话框有一个绑定到 sessionScope 变量的组合框。组合框包含一个表单名称列表,我使用这些名称然后调用 XPage 来创建新文档。表单列表中的第一个值是“”,因此用户需要选择一个值。我有一个带有 onClick 事件的按钮:
我在 customControl 上有一个带有 repeatControl 的按钮和对话框,当单击打开对话框的按钮时,ssSelectedForm 为空,并且组合的当前值为空白,这正是我想要的。但是,如果我将相同的按钮和对话框添加到带有 dataView 控件的 customControl 中,则会显示对话框,但 ssSelectedForm 不为空,因此组合框会显示 ssSelected 的最后一个值。我已将按钮放在 dataView 之外,在 dataview 的几个方面,但结果都相同。
非常混乱。
jsf-2 - jsf2 ViewScoped bean 初始化
我是 jsf 技术的新手,我试图了解ViewScoped jsf bean 的初始化时间和方式。
我有一个带有 2 个 bean 的示例应用程序
ApplicationScopedBean.java
ViewScopedBean.java
ApplicationScoped bean 只为应用程序启动创建一次。每次创建 ViewScoped bean 时,reincarnationNumber
都会增加 1。
我还有一个简单的 jsf 页面来显示这些值:
索引.xhtml
问题:
当我第一次启动应用程序时,我的值已经reincarnationNumber
等于3。
换句话说,我在浏览器中显示了这个信息:
这是为什么? 为什么 ViewScoped bean 创建了 3 次?
提前致谢!
解决方案
正如评论中所述,原因是在我的 IntelliJ IDEA 的运行配置中选中了“启动浏览器”复选框。诀窍是当浏览器从 IDE 自动启动时,我已经将 viewScopedBean 初始化了 3 次。
jsf - 等效于使用 CDI 对话范围的 ViewScope
是否有可能在每次加载页面时开始对话,并在我移出页面时结束对话。我如何使用 CDI 的对话范围像 View Scope 一样工作。我不想使用 seam-faces 或我的 faces Codi extensions 。我目前也没有切换到 JSF 2.2 的选项。