问题标签 [jsf-2.3]

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 回答
625 浏览

jsf - 使用 javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL 导致 viewParam 为空

我正在尝试将应用程序从 WildFly 13(Java EE 7、JSF 2.2.15)切换到 WildFly 16(Java EE 8、JSF 2.3.9)。尝试了 PrimeFaces 6.2 和 7.0

在 web.xmljavax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL中设置。JSF 2.2 版本工作正常,切换到 WildFly 16 这种不同的行为。一个简单的例子如下:

说明:访问:http://localhost:8080/primefaces-test/?tipo=U&test=Bah 点击第一个按钮,点击第二个按钮。在 ajax 之后,bean 中的 viewParam 值为 null,即使它填充在 url 中。

示例项目(码头):https ://github.com/erickdeoliveiraleal/primefaces-test/tree/update

XHTML

0 投票
0 回答
549 浏览

jsf - 如何在错误页面上修复 FacesContext 注入

我有带有标准 JSF 异常处理的 JSF 2.3 WAR 项目。请求中的任何错误都会分派到 .jsf 中配置的错误页面web.xml。我还使用新的 JSF 2.3改进的 CDI 支持来注入 FacesContext。
问题是当在序数页面上出现一些未处理的错误并且 jsf 将请求分派到错误页面时。然后我得到一个IllegalStateExceptionin com.sun.faces.context.FacesContextImpl.assertNotReleased

经过一些调试后,我意识到问题出在我注入FacesContext两个视图时。这种情况下的关键问题是,注入FacesContext存储在请求范围中,当它在错误页面上再次注入时,FacesContext存储在请求范围中已经被释放并过时,因为它在创建错误页面时再次创建。

为了展示这种情况,我制作了一个在 WildFly 16.0.0.Final 上运行的小型演示项目,index.xhtml页面简单:

error.xhtml

web.xml的是:

在尝试显示后,index.jsf我遇到了以下异常:

最后,我不确定这是 JSF 错误还是设计使然,我应该以不同的方式使用它?

0 投票
1 回答
790 浏览

jsf - 多

我正在使用 JSF 2.3 开发一个 CMS。我需要向每个页面传递一个 GET 参数,指示用户正在管理的站点。为此,我<f:viewParam>在所有页面中都使用,但我有以下疑问:

  1. <f:viewAction>可以像下面的示例那样对多个托管 bean使用多个吗?

这行得通,但我不确定它是否可以。

  1. 有没有办法避免在每个页面中复制<f:viewParam>站点参数?我尝试使用 includeViewParams,但如果我不包含<f:viewParam>在源页面和目标页面(从 page1.xhtml 到 page2.xhtml)中,则不起作用

3) 我可以定义多个<f:metadata>标签吗?例如,如果我使用模板和多个 ManagedBeans 页面(一个用于标题,一个用于菜单等)。

谢谢你,对我的英语感到抱歉。

0 投票
0 回答
157 浏览

jsf - 为什么@Model 是@RequestScope 而不是@SessionScope 或@ViewScope?

我阅读了关于JSF 支持 bean 结构(最佳实践)的答案这篇关于同一主题的文章,我真的很困惑。

在答案和文章中,模型bean 是会话范围的,但javax.enterprise.inject.Model @Model注释是请求范围的。

在文档中它说:

内置原型用于定义 MVC Web 应用程序架构(如 JSF)的模型层的 bean。

我认为这是一个矛盾。

什么是真正的用途,@Model为什么它是@RequestScoped?我应该为模型豆使用什么,并且引用的答案仍然适用吗?

0 投票
1 回答
225 浏览

java - JSF 2.3 整个 bean 验证丢弃了所有字段。是有意的吗?我用错了吗?

我有一个表格,可以说 3 个字段:

  • 密码提示
  • 密码
  • 再次输入密码

我有一个包含这 3 个字段的 bean,并且我有一个类级别的验证器,它检查 bean 是否有匹配的passwordpassword again字段。想象一个非常相似的设置,就像它在https://github.com/AnghelLeonard/JSF-2.3/tree/master/JSF23ValidateWholeBeanExample

我面临的问题是,我输入 a password hint, apassword和 a non matching password again。在这种情况下,我清除了整个表单,因为在我看来,WholeBeanValidator 阻止 JSF 将任何值保存到模型中。相关代码的地方在com.sun.faces.ext.component.WholeBeanValidator.validate(FacesContext, UIValidateWholeBean, Object)

在这种情况下,我认为将模型值保留在字段中并获取全局错误消息会很好。但是,这些值不会进入 bean。我理解错了吗?你能帮我解决这个@BalusC :) 吗?

0 投票
1 回答
58 浏览

jsf - 模拟点击不管用

我需要使用<h:inputFile>. 我正在使用以下代码:

正如你所看到的,我隐藏了丑陋的<h:inputFile>东西,只是用一个按钮来模拟点击它。

当我单击该按钮时,将显示文件资源管理器并且我可以选择一个文件,但是一旦选择,页面就会重新加载并且processFile永远不会调用该方法。

如果我删除隐藏类<h:inputFile>,单击它并选择一个文件,一切正常。

我尝试用<h:inputFile>可见来模拟点击,但发生了同样的错误行为。

我能做些什么来模拟点击并保留<h:inputFile>隐藏。

我正在使用带有 JSF 2.3 的 Wildfly。

谢谢

0 投票
1 回答
253 浏览

jsf - h:commandLink 与 f:ajax 不呈现

从 Wildfly 8 迁移到 16 和 Java 8 到 11 之后,我一直面临这个影响 JSFh:commandLinkf:ajax.

我试图渲染:mainform, mainform, @form... 但没有一个工作。我必须手动重新加载页面才能看到更改。

WF8 和 java 8 一切正常。

我该如何解决?

编辑:我尝试使用 Richfaces 和a4j:commandLink

仍然没有渲染..状态已更改但页面表单未刷新。

编辑:经过一些研究,javascript渲染似乎是一个错误:当我删除此功能时渲染工作:

0 投票
1 回答
138 浏览

jsf-2.2 - 了解 jsf.ajax.request 中的 JSF options.params

我们将基于 JSF 2.2 的应用程序迁移到 JSF 2.3,除了一些较小的问题外,我们能够让一切正常运行。对于一种视图,我们使用 Butterfaces JSF 组件,尤其是树组件。在 JSF 2.3 中,无法选择一个节点并在另一个容器中显示该节点的详细信息。适当的 Ajax 请求将节点的 id 发送为options.params. 这适用于 JSF 2.2,但不适用于 JSF 2.3。我们仍在使用 Butterfaces 2(由于向下兼容性应该可以工作),但即使在 Java EE 8 上的 Butterfaces 3 展示中,通过 Ajax 进行的选择似乎也不起作用。

我查看了jsf.ajax.requestJSF 2.3 的 Javascript 方法,对其进行了调试并意识到该参数被忽略并删除,因为它似乎是错误的格式。因此,我用这个愚蠢的代码片段在我们的应用程序中修补了方法,以通过 ajax 请求将参数发送到服务器:

就是这样,它又可以正常工作了。

所以我的问题是,问题应该出在哪里。忽略这些参数在 JSF 中是否存在问题。还是Butterfaces以错误的方式使用参数的问题?什么是正确的方法,使用options.params

提前致谢

0 投票
1 回答
925 浏览

primefaces - 使用带有 Hazelcast 的 Spring-Session 集群时 ViewScoped bean 的意外行为

我正在努力将集群引入基于 JSF 的 Spring-Boot Web 应用程序,一旦我们使用 Hazelcast 启用会话复制,我们就开始注意到我们的几个使用 ViewScoped bean 的 JSF 页面不再正常运行。如果我们禁用会话复制和 Hazelcast,则不再发生奇怪的行为。

我首先在我们的一个使用 PrimeFaces 向导组件的页面中注意到了这个问题。当“提交”第二页时,在向导第一页上输入的值将丢失。

然后在另一个页面上,我注意到命令按钮不再调用托管 bean 上的 actionListener 方法。我在方法中设置了一个断点,断点永远不会被击中,但是页面“闪烁”并刷新回其初始状态。我确实注意到托管 bean 上的 PostConstruct 方法不会再次调用,因此它不会生成 ViewScoped bean 的新实例。

但是,当我禁用会话复制和 Hazelcast 时,这些问题都不会发生。据我所知,检查会话及其内容,看起来确实会话正在创建并正确存储,据我所知。

该应用程序是一个 Spring-Boot Web 应用程序,使用 joinfaces 启动器引入 JSF 2.3.7 (Mojarra)、PrimeFaces 6.2 和 Omnifaces 1.14.1。我们最初在没有任何会话复制的情况下开发应用程序,并且我们的 ViewScoped bean 没有问题。

ViewScoped bean 使用 org.springframework.stereotype.Component 注释,就像您在 joinfaces 示例中看到的一样,并使用 javax.faces.view.ViewScoped 作为范围注释。我还尝试引入 Weld 并使用 @Named 注释,以及使用旧的不推荐使用的 JSF @ManagedBean 和 @ViewScoped 注释,但在所有情况下都存在相同的行为。

我已经完成并确保我们的 ManagedBeans 以及 bean 本身的任何属性都是完全可序列化的。

为了演示我所看到的,我从网络上的几个地方挑选了两个非常简单的示例,并创建了一个简单的 Spring-Boot 项目,您可以自己克隆和运行它。
https://github.com/illingtonFlex/ViewScopeDemo

此演示应用程序包含两个托管 bean 和两个 xhtml 文件。

第一个示例是从 BalusC 网站上的示例复制而来的:http: //balusc.omnifaces.org/2010/06/benefits-and-pitfalls-of-viewscoped.html

xhtml 文件如下所示:

支持此页面的 ViewScoped bean 如下所示:

如果您启动应用程序并导航到 localhost:8080/index.xhtml,请单击其中一个条目上的编辑。然后在文本字段中输入新名称并单击保存。托管 bean 上的 save 方法永远不会被调用,并且页面“重置”到它的初始状态。如果您通过注释掉 @EnableHazelcastHttpSession 注释以及 ViewScopeDemoApplication 中定义的 hazelcastInstance @Bean 来禁用 Hazelcast 和会话复制,则上述示例步骤有效。调用 save 方法,更改编辑项的名称。

为了演示另一个奇怪的 ViewScoped 行为示例,我从 PrimeFaces 展示中逐字复制了向导示例代码: https ://www.primefaces.org/showcase/ui/panel/wizard.xhtml

启动应用程序后,您可以通过 localhost:8080/wizard.xhtml 访问此示例

启用 Hazelcast 和会话复制后,您可以在 onFlowProcess 方法中设置一个断点,该断点在从向导的一个页面导航到下一个页面时触发。您可以看到在向导第一步中输入的值在随后的向导页面更改中丢失(它们变为空)。禁用 Hazelcast,值会在整个向导选项卡范围内保持不变。

当问题发生时,我没有在日志中看到任何错误或异常。我也没有在浏览器调试控制台中看到任何问题。但是,从这两个示例中可以清楚地看出,ViewScoped bean 的行为取决于是否启用了 Hazelcast 会话复制。

提前感谢您的帮助和考虑!

0 投票
1 回答
295 浏览

jsf - Ajax 事件“选择”不适用于 JSF 2.3 中的 h:selectOneMenu 而它在 2.2 中工作

我使用 Mojarra、primeFaces 6.2 和 Liberty server 18.0.0.4 版本在 JSF 2.2 中开发了项目。现在正在升级到 JSF 2.3。我在我的项目类路径中添加了 jar 文件 javax.faces.2.3.8.jar。当我运行项目时出现以下错误,

下面是 h:selectOneMenu 的 .xhtml 代码

JSF 2.2 运行良好,没有任何问题。在 JSF 2.3 中,我面临上述问题。