问题标签 [jsf-2]
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.
java - JSF 2.0 和 MyFaces Tomahawk
我一直在调查我们现有的使用 JSF 1.2 & tomahawk 1.1.9 & no facelets 的 web 应用程序的 JSF 升级,以使用 JSF 2.0 & tomahawk 1.1.9
这是我到目前为止的发现:
除了与 at:dataScroller 一起使用的 t:dataTable 之外,所有 tomahawk 组件都可以正常工作——但只有在 t:dataTable 上的 preserveDataModel="true" 时。
解决方法是设置 preserveDataModel="false"
- 为什么它会在这里解释:http: //www.mail-archive.com/dev@myfaces.apache.org/msg40741.html
这里解释了将 preserveDataModel="true" 更改为 preserveDataModel="false" 的影响: http ://wiki.apache.org/myfaces/Working_With_DataTable_And_PreserveDataModel
现有的 JSF 1.2 标记在 JSF 2.0 运行时仍然有效
有没有其他人做过类似的事情——你的经验是什么?
我在网上到处搜索,但在这个主题上找不到太多,但目前我很有信心将新库放到测试环境中几周,然后再放到实际环境中。
jsf - CDI 超时导致 NPE
有没有办法(在 JSF 2 中)捕获会话超时并将用户重定向到新页面?当对话超时时,我得到了令人讨厌的 NullPointerExceptions。
我可以在所有 NPE 上重定向用户,但这似乎是一个太大的网络。
java - JSF:无法捕获 ViewExpiredException
我正在 Glassfish v3 上开发一个 JSF 2.0 应用程序,并且我正在尝试处理 ViewExpiredException。但无论我做什么,我总是得到一个 Glassfish 错误报告,而不是我自己的错误页面。
为了模拟 VEE 的发生,我将以下函数插入到我的支持 bean 中,它会触发 VEE。我正在通过commandLink 从我的JSF 页面触发此功能。编码:
起初我通过简单地向我的 web.xml 添加一个错误页面来尝试它:
但这不起作用,我没有重定向到错误,但我看到了 Glassfish 错误页面,它显示了一个 HTTP 状态 500 页面,其中包含以下内容:
接下来我尝试编写 ExceptionHandlerFactory 和 CustomExceptionHandler,如JavaServerFaces 2.0 - The Complete Reference中所述。所以我将以下标签插入到 faces-config.xml 中:
并添加了这些类:工厂:
自定义异常处理程序:
但我仍然没有重定向到我的错误页面 - 我得到了与上面相同的 HTTP 500 错误。我做错了什么,我的实现中可能缺少什么异常处理不正确?任何帮助都非常感谢!
编辑
好吧,我说实话。事实上,我的代码实际上是用 Scala 编写的,但说来话长。我一直认为这是一个Java问题。在这种情况下,真正的错误是我自己的愚蠢。在我的 (Scala) 代码中,在 CustomExceptionHandler 中,我忘记添加带有“i.remove();”的行 所以 ViewExpiredException 在处理后留在了 UnhandledExceptionsQueue 中,并且它“冒泡了”。当它冒泡时,它变成了一个 ServletException。
真的很抱歉让你们俩感到困惑!
jsf - 为什么 JSF 2.0 RI (Mojarra) 不扫描我的班级的注释?
我的基于 Eclipse 的 JSF 项目中有一个 War and Jar 项目。我决定使用注释来声明我的 FacesConverter,(在无数其他事物中),而不是使用我的 faces-config.xml 来声明它。
然后我直接在我的 .xhtml 中使用passwordFieldStringConverter :
JSF 应该在部署时扫描我的 War 中的 jar 并检测哪些类上有注释(并相应地自动配置应用程序)。我的问题是 JSF 显然没有检测到我拥有哪些运动注释的类。
War 项目有我所有的 .xhtml 文件以及项目的 faces-config.xml,我的 Jar 项目有我所有的 faces 相关 Java 代码(动作 bean、托管 bean、自定义转换器等)
jsf - JSF 中的 faces-redirect=true
我?faces-redirect=true
在我的 JSF2 中使用 ,因为我想重定向用户以便更改 URL。
在 JSF1.2 中,我添加</redirect>
了 faces-config。
在 JSF2 中,我必须添加到我的网址 return home?faces-redirect=true.
问题是我faces-redirect=2
在URL中看到的,我在使用时在JSF1.2中没有看到的</redirect>
如何在操作中使用 faces-redirect 而不在浏览器 URL 中显示它?
我的罐子清单:
- antlr-2.7.6.jar
- aopalliance-1.0.jar
- 方面jrt.jar
- 大气兼容tomcat-0.5.jar
- 大气运行时0.5.jar
- commons-beanutils-1.7.0.jar
- commons-collections-3.2.jar
- commons-dbcp-1.2.2.jar
- commons-digester-2.0.jar
- commons-fileupload-1.2.1.jar
- commons-httpclient-3.1.jar
- commons-io-1.4.jar
- commons-logging-1.1.1.jar
- commons-pool-1.5.4.jar
- dom4j.jar
- ehcache-1.2.4.jar
- hibernate-annotations.jar
- hibernate-cglib-repack-2.1_3.jar
- hibernate-commons-annotations.jar
- hibernate3.jar
- itext-1.4.8.jar
- javassist.jar
- javax.persistence.jar
- jhighlight-1.0.jar
- jsf-api.jar
- jsf-impl.jar
- jstl-api-1.2.jar
- jstl-impl-1.2.jar
- jta-1.1.jar
- log4j-1.2.15.jar
- 邮件.jar
- mysql-connector-java-5.1.0-bin.jar
- org.springframework.aop-3.0.1.RELEASE-A.jar
- org.springframework.asm-3.0.1.RELEASE-A.jar
- org.springframework.aspects-3.0.1.RELEASE-A.jar
- org.springframework.beans-3.0.1.RELEASE-A.jar
- org.springframework.context-3.0.1.RELEASE-A.jar
- org.springframework.context.support-3.0.1.RELEASE-A.jar
- org.springframework.core-3.0.1.RELEASE-A.jar
- org.springframework.expression-3.0.1.RELEASE-A.jar
- org.springframework.instrument-3.0.1.RELEASE-A.jar
- org.springframework.instrument.tomcat-3.0.1.RELEASE-A.jar
- org.springframework.jdbc-3.0.1.RELEASE-A.jar
- org.springframework.jms-3.0.1.RELEASE-A.jar
- org.springframework.orm-3.0.1.RELEASE-A.jar
- org.springframework.oxm-3.0.1.RELEASE-A.jar
- org.springframework.test-3.0.1.RELEASE-A.jar
- org.springframework.transaction-3.0.1.RELEASE-A.jar
- org.springframework.web-3.0.1.RELEASE-A.jar
- org.springframework.web.portlet-3.0.1.RELEASE-A.jar
- org.springframework.web.servlet-3.0.1.RELEASE-A.jar
- org.springframework.web.struts-3.0.1.RELEASE-A.jar
- poi-3.2-FINAL.jar
- primefaces-2.0.3-SNAPSHOT.jar
- slf4j-api-1.5.11.jar
- slf4j-log4j12-1.5.11.jar
- spring-aop.jar
我的 web.xml
java - JSF 2.0 h:selectManyListbox f:selectItems - 始终为空
我有一个 JSF 创建表单,它使用内部带有 selectItems 的 selectManyListbox(它应该包含所有可用于项目的标签)。尽管 selectItems 列表始终为空 - 当页面呈现时,列表框中没有任何内容。尽管如此,支持 bean 中的列表仍然包含 3 个条目(选中)。我究竟做错了什么?
支持bean:
和页面:
我试着按照这个页面的类比来做:http: //digitaljoel.wordpress.com/2010/01/11/jsf-2-custom-converter/
我写的转换器还有待测试。
java - JSF2 - 为什么渲染响应不重新渲染组件设置?
我遇到以下问题:
在我的视图恢复后,字段验证会导致 JSF 跳到渲染响应阶段(因为必填字段为空)。但是即使呈现当前值(空字符串)以向用户显示他/她没有填写任何内容,也不会执行以下语句:
它是错误还是功能?请帮忙。
完整的测试示例(Netbeans 6.8 项目)在这里:http ://www.221b.cz/so/JSFTester.zip
来自教程:“如果请求是回发并且在应用请求值阶段、处理验证阶段或更新模型值阶段遇到错误,则在呈现响应阶段呈现原始页面”(http://java.sun .com/javaee/5/docs/tutorial/doc/bnaqq.html)
这是否意味着如果视图在“恢复视图”阶段恢复,然后任何应用请求/验证/更新模型阶段失败并跳到“渲染响应”,渲染响应仅通过恢复的视图而不对客户端进行任何更改?
托管 Bean (TesterBean.java):
复合组件(field-component.xhtml):
页面(index.xhtml):
编辑,遵循布赖恩的建议(field-component.xhtml)
但是即使我摆脱了 JSTL 仍然无法正常工作:-( 似乎只有 value 属性是用 h:inputText 中的 http 请求的新值更新的,但其余属性不会在 Render Response 阶段重新评估。
java - 我们可以在 JSF2 复合组件中拥有一个组件范围的 bean 吗?
我想知道如何创建“组件范围的”bean,或者可以说,“复合组件内的局部变量”,它们对复合组件的实例是私有的,并且只要该实例存在就一直存在。
以下是更多详细信息,并通过示例进行说明:
假设有一个“计算器”组件——允许用户输入数学表达式并计算其值的东西。可选地,它还绘制相关函数。
我可以制作一个复合组件,它具有:
- 用于接受数学表达式的文本框
- “评估”和“绘图”两个按钮
- 绘制函数的另一个嵌套组件
它显然是一个独立的功能;所以想要使用它的人可能会说 <math:expressionEvaluator />
但显然,实现将需要一个 java 对象 - 评估表达式的东西,计算绘图点的东西等 - 我想它可以是一个 bean - 仅针对此组件的此实例,而不是视图范围或在组件的所有实例之间共享的请求范围的 bean。
如何创建这样的 bean?复合组件甚至可能吗?
java - JSF 2:Facelets 组合(模板)未针对错误页面呈现
我在 Java EE 6 应用程序服务器(GlassFish v3)中使用 JSF 2.0 和 Facelets。我在 web.xml 中为异常配置了一个错误页面:
这是/error-all.xhtml
测试页面:
我实现了一个托管 bean,当我单击其中一个 commandLink 时,它会故意抛出 RuntimeException。发生这种情况时,会显示 /error-all.xhtml 页面的内容,但它不会通过 Facelets 获取进程,因此不会应用template="/resources/templates/decorator.xhtml"。
使用谷歌浏览器,我只看到“标题”和“正文”,结果没有布局。如果我让 Chrome 检查元素,我会得到完整的源代码,其中包括ui:composition和ui:define标签,Chrome 显然不理解这些标签。这证实了我的理论,即 Facelets 页面没有被处理。
所以,我的问题是,如何解决这个问题?如何使错误页面得到处理并返回作为模板与错误页面内容组合结果的 HTML 代码?
ajax - 什么是真的应该做吗?它只发布封闭的表格
对不起,如果我很厚,但是 f:ajax 标记中的 execute="@all" 真的应该做什么?我希望它提交页面上的所有元素,但它似乎只发布封闭表单中的值,而不是页面上的所有表单。
例如
只有 form2 在点击时发布。
使用 mojarra 2.0.2..