问题标签 [omnifaces]
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-2 - 处理 ViewExpiredException(JSF 2.1、Seam2、Primefaces 3.4.1、Omnifaces 1.3)
我在尝试使用框架 JSF 2.1、Seam 2.3、Primefaces 3.4.1、Omnifaces 1.3 正确处理 ViewexpiredException 时遇到了可怕的问题。
在这里你可以看到我在 primefaces 论坛上发布的问题的完整解释:http: //forum.primefaces.org/viewtopic.php? f=3&t=28215
在这篇文章中,我被告知要尝试全脸(我现在正在尝试这样做)。所以我在我的项目中配置它(不确定是否正确)。
我将此添加到我的 faces-config.xml 中:
一切似乎都正常,FullAjaxExceptionHandlerFactory 似乎试图处理异常并尝试重定向到登录页面(请参阅我在 primefaces 论坛上的最后一篇文章)但应用程序被冻结并且没有真正发生,我不太确定我是否做了错误什么的。
我已经尝试了我在互联网上找到的几乎所有解决方案,但似乎对我不起作用,当某些东西似乎起作用时,我在登录后得到这个页面(我被重定向导致会话退出):http://img831.imageshack。我们/img831/7459/pic4w.png
提前致谢
jsf - 在带有“for”标签的合成组件中使用 Omnifaces Validator
我想将omnifaces库中的o:validator标签用于组合组件:
验证器的调用方式如下:
但不幸的是,omnifaces 的验证器标签似乎忽略了“for”属性。使用来自 JSF 的原始验证器标记,“for”标记有效,但如果“compareTo”标记的值是 ValueExpression,则无效。
我试图实现一个自定义标记处理程序,但这也不起作用。
html - MyFaces 2.0.4 无法呈现 h:form 标签
我有一个简单的 JSF 2.0 xhtml 页面,当我插入 h:form 标记时它不会呈现。我可以使用普通的标签,一切都很好。
这是我的规格: - Java 1.6 - WebSphere 8.0.0.5 及其内置的 Apache MyFaces 2.0.4 - PrimeFaces 3.4.2 - OmniFaces 1.3 - 我必须支持 HTML 5 标签,所以我正在使用
这是简单的测试页面:
我还使用 NetBeans 和 Tomcat 7 测试了这个测试页面,其中 MyFaces 2.0.4 被列为依赖项,PrimeFaces 和 OmniFaces 依赖项从我的 pom 中取出,以确保两者都不会导致问题。该页面仍然不会呈现。
请注意,将 DOCTYPE 更改为典型值:
也不工作。
这是错误:
javax.faces.FacesException: java.lang.NullPointerException: org.apache.myfaces.shared_impl.context.ExceptionHandlerImpl.wrap(ExceptionHandlerImpl.java:241) 的 serialFactory 在 org.apache.myfaces.shared_impl.context.ExceptionHandlerImpl.handle(ExceptionHandlerImpl .java:156) 在 org.apache.catalina.core 的 javax.faces.webapp.FacesServlet.service(FacesServlet.java:191) 的 org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:258)。 ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) at org .apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) 在 org.apache。catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java: 99) 在 org.apache.catalina.valve.AccessLogValve.invoke(AccessLogValve.java:929) 在 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 在 org.apache.catalina.connector.CoyoteAdapter .service(CoyoteAdapter.java:407) 在 org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002) 在 org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585) 在 org. java.util.concurrent.ThreadPoolExecutor 上的 apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1813)。runWorker(ThreadPoolExecutor.java:1110) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) at java.lang.Thread.run(Thread.java:722) 原因:java.lang.NullPointerException : org.apache.myfaces.shared_impl.util.StateUtils.construct(StateUtils.java:235) 的 org.apache.myfaces.shared_impl.util.StateUtils.construct(StateUtils.java:235) 的 serialFactory .renderkit.html.HtmlResponseStateManager.writeViewStateField(HtmlResponseStateManager.java:120) at org.apache.myfaces.renderkit.html.HtmlResponseStateManager.writeState(HtmlResponseStateManager.java:111) at javax.faces.render.ResponseStateManager.writeState(ResponseStateManager.java :67) 在 org.apache.myfaces.application.jsp.JspStateManagerImpl.writeState(JspStateManagerImpl.java:598) 在 javax.faces.application.ViewHandlerWrapper.writeState(ViewHandlerWrapper) 在 org.apache.myfaces.application.ViewHandlerImpl.writeState(ViewHandlerImpl.java:302) 在 javax.faces.application.StateManager.writeState(StateManager.java:200) .java:65) 在 javax.faces 的 javax.faces.application.ViewHandlerWrapper.writeState(ViewHandlerWrapper.java:65) 在 org.apache.myfaces.shared_impl.renderkit.html.HtmlFormRendererBase.encodeEnd(HtmlFormRendererBase.java:179) 在 javax.faces。 component.UIComponentBase.encodeEnd(UIComponentBase.java:519) 在 javax.faces.component.UIComponent.encodeAll(UIComponent.java:626) 在 javax.faces.component.UIComponent.encodeAll(UIComponent.java:622) 在 javax.faces .component.UIComponent.encodeAll(UIComponent.java:622) 在 org.apache.myfaces.view.facelets.FaceletViewDeclarationLanguage。renderView(FaceletViewDeclarationLanguage.java:1320) at org.apache.myfaces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:263) at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:59) at javax.faces.application .ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:59) at org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:85) at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:239)。 .. 还有 17 个59) 在 org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:85) 在 org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:239) ... 还有 17 个59) 在 org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:85) 在 org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:239) ... 还有 17 个
我注意到这个问题在 MyFaces 2.0.6 中得到了修复。问题是我被束缚在 WAS v8 的 MyFaces 2.0.4 上。我需要使用 WAS v8 的内置 CDI,所以我可以将它与 EJB 3.1 结合使用。您只能将内置 CDI 与内置 MyFaces 一起使用(在 WAS v8 手册中是这样说的)。
任何解决方法的建议?我可以改用简单的<form>
标签吗?<form>
使用标签时,我没有看到任何 MyFaces 错误。
jsf - 页面呈现期间异常的错误页面
在我的 JSF 应用程序的支持 bean 中,可能随时抛出某些异常,我想通过重定向到错误页面来对此做出反应。我已经包含了omnifaces FullAjaxExceptionHandler,我的web.xml
包含
在大多数情况下,包括 Ajax 请求,这都能正常工作:ResourceNotFoundException
将我带到错误页面。但是,当在带有 注释的方法中引发异常时@PostConstruct
,我总是得到错误代码 500 的通用页面。
这是因为 JSF 将异常包装在其他东西中并且其中的机制web.xml
无法识别它吗?如果是,我怎样才能让它按预期工作?
这是我在服务器日志中看到的异常跟踪:
jsf - OmniFaces:SelectItemsConverter 不适用于 PrimeFaces:PickList
我正在尝试将 SelectItemsConverter 与 PrimeFaces Picklist 一起使用。
XHTML:
转换器:
豆:
在调试转换器时,我可以看到 getAsString 方法工作正常。但是在提交表单后,两个数组列表(dlmFirmaSource 和 dlmFirmaTarget)都是空的。
OmniFaces 展示柜说
“omnifaces.SelectItemsConverter 允许您使用复杂的 Java 模型对象作为 f:selectItems 的值填充例如下拉列表,并让 JSF 自动将这些对象转换回来,而无需提供可能需要根据可能完成工作的自定义转换器昂贵的服务/DAO 操作。”
但如果是 PickList 组件,则不存在任何 f:selectItems 标记。
SelectItemsConverter 是否甚至支持 PickList 组件?
jsf - 带有数据表和惰性数据模型的 FullAjaxExceptionHandler
我正在使用 primefaces 3.4 和 omnifaces 1.3 构建搜索页面。托管 bean 是 SessionScoped。
我有一个带有以下内容的 xhtml 页面:
SearchBean 有一个方法 search 来初始化查询和lazyDataModel。
LazyDataModel 对 db 进行真正的查询。
当会话超时时,lazyDataModel 加载方法出现异常,但 FullAjaxExceptionHandler 无法拦截...
如何在lazyDataModel 中管理异常以重定向到过期会话页面?
感谢您的任何回复。
hibernate - Tomcat 上的 Spring Security/JSF/Hibernate 意外会话劫持?
前几天我发生了一件非常奇怪和尴尬的事情,我无法用语言来描述发生的事情。
我的应用程序在 Tomcat 7 上运行与 JSF 2.1、Hibernate 4、Spring Security 集成的 Spring 3。我通过电话与 C 级别的重要人物通话,我们同时在同一页面上同时在测试环境中。当他的页面出现我的个人帐户详细信息时,他几乎在同一时刻导航到我正在导航的页面。我不相信他,所以我走到他的办公室,果然,他不知何故以我的帐户登录,而他没有密码。
该应用程序将保护患者的健康信息,因此我被要求向 C 级人员提供一份完整的报告,说明所发生的事情,但我不知道这是怎么可能的。我搜索了代码库,一无所获。我试图在多个场合重现确切的场景,但始终无法重现。我什至没有一个我满意的有根据的猜测。
我认为可能对存储在 Tomcat 应用程序上下文实现中的会话进行了一些不安全的线程操作,但如果它不可重现,我无法证明这一点。我还认为,由于 Spring Security 在其他请求和转发之前作为过滤器运行,因此可能其他 servlet 过滤器之一受到干扰。另外两个是我最近添加的 Primefaces 文件上传过滤器和 Omnifaces SEO 过滤器。
Omnifaces 过滤器确实干扰了 Primefaces 文件上传过滤器,我不得不修改它的配置,这样它们两个才能很好地相互配合,所以我仍然觉得这也可能是一种可能性。
Spring Security 是否有任何已知的错误导致类似的问题?Tomcat 是否存在关于从 ApplicationContext 意外提供错误会话状态的已知问题?有没有其他人遇到过类似的问题或对此有一些独特的见解?
编辑:发布后不久,我发现了这个,仅在几天前发布:
会话混合 - apache httpd 与 mod_jk、tomcat、spring security - 提供其他用户的数据
它几乎与我在 Tomcat 前面安装 Apache httpd+mod_jk 插件的设置完全相同,所以我肯定不是疯了 :)
更新:
我能够在没有 mod_jk 或 Apache 的情况下在我的开发环境中重现该问题,因此我可以可靠地将其排除为罪魁祸首。
javascript - 页面顶部的 JSF 滚动条
我想知道如何制作浏览器的滚动条。转到页面顶部。我正在开发一个太大的注册屏幕,它包含一些需要的字段。如果未通知必填字段,它会向用户显示错误消息。问题是滚动条上不去,我想让她到页面顶部。我正在使用 Primefaces 和 JQuery,但没有这个工作。
jsf - 使用 FullAjaxExceptionHandler 重定向到顶层页面
对于我的 JSF 页面的异常处理,我正在使用 FullAjaxExceptionHandler(感谢 BalusC ;-))。错误处理有效,但由于某些原因,我无法重定向到顶层。即,异常发生在 iFrame 中(是的,我知道我不应该使用它......)并且错误页面显示在此框架中。如何重定向到顶级页面?使用 ?faces-redirect=true 没有任何反应。
TIA,
拉尔夫。
ajax - JSF Ajax (ViewRoot) 更新后重定向
当使用 ajax 请求触发任何异常时,我使用omnifaces FullAjaxExceptionHandler 进行重定向,在我的情况下是捕获ViewExpiredException。
我将尝试解释我的情况:
1)我有一个带有commandButton(ajax请求)的index.xhtml页面,以使会话无效并返回类似“/login?faces-redirect = true”的操作。
2) 在同一个浏览器中打开 index.xhtml 两次。
3) 在第一个 index.xhtml 中单击按钮(会话无效并重定向到 login.xhtml)
在这一点上,考虑到我有一个自定义 PhaseListener 来检查用户是否已成功登录,login.xhtml 用于公共访问,但 index.xhtml 仅限于授权用户,web.xml 用于查看过期和 403 错误是:
4)转到第二个index.xhtml(此时会话无效),现在单击按钮以启动异常。
FullAjaxExceptionHandler 捕获 ViewExpiredException 并尝试渲染 index.xhtml,但同时我的 Phaselistener 正在检查用户是否被授权,比如会话无效,用户未被授权并且我的 PhaseListener 触发 responseSendError(403),但不是显示 403.xhtml,因为是 ajax 请求。
如何发送 403 错误以从我的 PhaseListener 显示 403.xhtml?responseSendError 正在取消 FullAjaxExceptionHandler 的正常进程,在该异常发生的那一刻,不会发生重定向。
此外,为了澄清视图何时过期,我需要重定向到 index.xhtml,因为在生产中我使用的是 CAS(中央身份验证服务)。