问题标签 [mojarra]

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

java - Apache MyFaces JSF2.0 错误:getStateHelper().put 不保存任何东西?

MyFaces 似乎忽略了我在此组件中对 getStateHelper.put() 的调用:

可以看到,当前端组件调用 nextPage 时,目标是将页码前移一位。但是,当在 MyFaces 中运行它时,eval() 调用将适用于即时请求生命周期,但下一个请求将返回 0。如果我输入 null 而不是 0,我会得到一个 NPE。

pageNumber 状态需要在组件的生命周期内携带,而不仅仅是当前请求。我究竟做错了什么?这段代码在 Mojarra 下运行良好,但在 MyFaces 中不行。

0 投票
1 回答
1542 浏览

java - 在 UIInput 组件中使用带参数的方法时如何调用 setter 方法?

例如,在我使用带参数的方法来获取 JSF 页面上组件的值之前

但是现在我需要相同的原理,但是在 inputText 元素的 value 属性上使用它,所以它或多或少是这样的:

问题是,当从 af:ajax 元素执行元素时,第二种方法不会调用 setter 方法。

将值传递给 backingBean 上的 setter 和 getter 方法的另一种方法是什么?

非常感谢。

0 投票
2 回答
6386 浏览

jsf - p:dataTable多项选择不起作用

我似乎没有在 PrimeFaces dataTables 中进行多项选择。

我正在尝试实现客户列表(dataList)并在嵌套数据表中显示他们各自的预订,并可以选择多个预订进行计费:

我的控制器和支持 bean 类:

数据模型类:

当我提交带有我的选择的表单时,浏览器会将以下数据发布到服务器:

另外,我在调试过程中发现返回正确的对象(选定的对象)的方法getRowDataBookingsDataModelBooking

但是,总是将空数组传递给setBookingsToBill我的Client对象。这里可能出了什么问题?


更新:

空数组仅传递第一个Client对象 - 是否选择了预订无关紧要。所有其他Client对象的setBookingsToBill方法都使用参数值调用null

0 投票
0 回答
1012 浏览

jsf - 如果放在里面就不起作用

jsf 有几个限制(缺陷?)导致这个问题。

jsf中的第一个“render”属性限制,即使render为false,组件仍然被处理。这会导致 ui:repeat 中的每个 attr 类型都会尝试评估每个输出组件的值。即 selectBooleanCheckbox 的值将尝试评估日期类型。如果 render 为 false,则组件最终不会被渲染。如果没有 selectBooleanCheckbox(第二期),即使有这个问题,一切都很好。第二个问题,selectBooleanCheckbox 将始终假定输入值是布尔类型。因此,对于日期类型,评估值(由于第一个问题)将失败。

这个代码狙击手是否常见于在 JSF 中动态显示不同的数据类型?我尝试为 selectBooleanCheckbox 配置自定义渲染器、转换器。但它仍然因数据类型转换异常而失败。任何想法?如何将 selectBooleanCheckBox 的默认“expectedType”从“Boolean”更改为“Object”,就像其他 JSF 输入组件一样。

--更新:这个问题只针对 mojarra 而不是 myfaces。

0 投票
1 回答
7465 浏览

jsf - j_security_check 没有重定向到欢迎页面 - 成功的登录事件监听器?

多年来,我一直很困惑为什么在登录后有时我没有定向到应用程序欢迎页面。我终于想通了(比其他人晚了几年):

  • 我通过 j_security_check 成功登录并进入欢迎页面

  • 等待会话超时

  • 单击发送 GET 请求的 h:link

  • 因为它是 GET 而不是 POST 我的自定义 ViewExpiredException
    处理程序不会启动


  • 由于会话超时,容器安全性重定向到登录页面。由于会话超时+容器安全性,应用程序在阶段侦听器或过滤器中看不到获取请求(来自 h:link)。

  • 我再次成功登录

  • j_security_check 将我重定向到触发
    身份验证的页面,在这种情况下是 GET 请求的目标。

最后一点我不明白,我认为它总是会进入欢迎页面。

我的问题是我目前的设计要求登录后我总是显示欢迎页面。欢迎页面有一个 preRenderView 事件,它在登录后在会话范围的 bean 中设置一些上下文信息并增加一些计数器等......

支持其他页面的 bean 代码需要此上下文信息,目前如果我不先浏览欢迎页面,则会出现异常。

在修复它方面,我查看了以下选项:

  1. 理想情况下,会有一个可以调用的@PostLogin 方法,它可以彻底解决我的所有问题。我将 JSF (Mojarra) 与 Myfaces CODI 一起使用,但我没有看到任何我想要的东西。

  2. 我可以向我的过滤器添加更多代码,但我需要保留一些数据(即登录计数),这看起来不是一个不错的选择。也许我错了。

  3. 我让 j_security_check 的潜在目标(使用 GET 调用的页面)的所有 preRenderView 方法处理直接从 j_seecurity_check 调用它们的情况。我可以看到这是我必须做的,但这似乎很麻烦。

  4. 为 glassfish 编写一个服务器身份验证模块以覆盖 j_security_check 行为。

这通常是如何处理的?经过多年滥用 POST 后,我开始使用 GET 处理简单的导航案例,并且自定义异常处理程序不起作用。如果有人对此问题有任何指导,我将不胜感激,至少我知道现在发生了什么。希望我错过了一些明显的东西!

感谢操作系统

0 投票
2 回答
3866 浏览

jsf-2 - 从 myfaces 切换到 mojarra 后出现 IndexOutOfBoundsException

我被迫从 myfaces (2.1.7) 切换到 mojarra (2.1.7)。在此之后,我在下面到处都是这样的例外。

我正在提交一个表单,它给了我验证错误。到目前为止这是正确的。我再次提交表单,这给了我验证错误。到目前为止这是正确的。现在我再次提交表单,我得到了 IndexOutOfBoundsException。

我用谷歌搜索了这个,但还没有找到任何线索。

强尼

0 投票
1 回答
3994 浏览

jsf-2 - 使用 Mojarra 2.0.4 问题配置 JBoss AS 7.1.1

我在 JBoss AS 5.1.0 GA 上有一个工作 webapp。它使用 Mojarra 2.0.4 罐子。我正在将其迁移到 JBoss AS 7.1.1。此版本的 JBoss 随 2.1.7 一起提供。META-INF/jboss-deployment-structure.xml因此,我通过为 2.0.4 定义插槽并将它们与其他依赖项一起称为依赖项来降级 Mojarra 版本。

jboss-部署-结构.xml

这导致在部署时引发以下异常

我参考了这个链接并修改了我的依赖项,如下所示

它消除了部署时的错误,但引入了以下运行时异常

我认为(当然是通过谷歌搜索)异常通常是由三件事引起的

  1. xhtml 中使用了无效/未关闭的标签(错误传播的异常)
  2. 会话超时(错误传播的异常)
  3. Tomcat中POST参数的限制

不幸的是,前两个不是原因。我通过验证器运行了错误的 xhtml 页面,发现标记是有效的,我的会话也没有过期。我还增加了org.apache.tomcat.util.http.Parameters.MAX_COUNT5000standalone.xml以解决第三点。错误仍然存​​在。

我还尝试迁移到默认捆绑的 Mojarra 2.7.1 版本。这阻止了第一个运行时异常,但第二个仍然存在。导致此错误的那些页面的唯一特殊之处在于它们中有 ajax 调用。有趣的是,该应用程序在 AS 5.1.0 GA 上运行良好,所以如果我的标记有误,我在 5.1.0 上也会遇到困难,但事实并非如此。所以无效标记是不可能的。非常感谢任何指针!

更新:刚刚发现那行在PartialViewContextImpl.java:431显示ctx.getRenderKit()正在评估到null。不知道为什么

UPDATE2:事实证明,只有当我在表单中使用纯 html 输入组件时才会看到问题,如果<input type="text">, <select>我从 ie 等中删除它们,<h:form>或者将它们转换为相应的 JSF 标记,它工作正常。某处出现了严重的问题。我无法确定这是由 jboss、Mojarra 还是特别是我的应用程序引起的。我用一个普通的 JSF 应用程序尝试了它,无论我是否使用 html 输入标签,它都没有错误。所以它是我的应用程序和 jboss 7.x 的组合导致了这种情况。有任何想法吗?

0 投票
1 回答
4863 浏览

jsf-2 - 如何防止 JSF2 注入隐藏的 javax.faces.ViewState

如何禁止 Mojarra,将 javax.faces.ViewState 注入隐藏到我<form>的 s 中?我有一个搜索<form method='GET'>,它在我的页面第一次加载时有效(因为我的视图范围 bean 已正确重新初始化)。但是在页面中(通过 PrimeFaces 网格)进行 AJAX 分页之后,Mojarra(或 PrimeFaces?)将隐藏的 javax.faces.ViewState 注入到我的表单中。现在,当我提交表单时,由于 javax.faces.ViewState 输入,它不会重新启动我的视图范围 bean。

这里的问题是:我希望我的搜索 bean 初始化并向用户显示结果,但是由于 ViewScope 参数被传递,这个 bean 既没有被初始化,也没有显示相关页面。它只保留在上一页上。

0 投票
1 回答
7032 浏览

jsf - 如何在 GlassFish 中更新 Mojarra 版本

我想更新我的 JSF 应用程序以使用 Mojarra 版本 2.1.8。我将这些行添加到 WAR 包的 POM 文件中:

我还添加了 JSF 存储库。我的包是用 Mojarra 2.1.8 版成功构建的。但是当我打开 GlassFish 日志时,我看到部署了 Mojarra 版本 2.1.6。我错过了什么?我需要对 GlassFish 服务器进行一些配置吗?

0 投票
1 回答
418 浏览

java - 对象内部的属性会在会话中消失,但 Bean 本身不会

我有两条不同的路径,这只发生在另一条路径中:

  1. SignUp.Xhtml-->SigninUpOkView-->Login.xhtml-->Welcome.xhtml-->UsersController.prepareCreateParty()--->createParty.xhtml-->UsersController.createParty()

  2. SignUp.Xhtml-->SigninUpOkView-->Login.xhtml-->Logout-->Login.xhtml-->Welcome.xhtml-->UsersController.prepareCreateParty()--->createParty.xhtml-->UsersController.createParty()

那么会发生什么:我在控制器的方法 prepareCreateParty() 中创建了一个新的派对对象并将其插入到用户对象中,这样当用户转到 CreateParty-xhtml 页面时,派对不为空,但它仅在我的情况 2 中工作在 Signin up 和 createParty 之间注销。UserController 是 managedBean 并且 UsersController 在 SessionScoped 上。我仍然在会话中使用名称为用户的用户,并将其放在登录过滤器中。Welcome.xhtml---->UsersController.CreateParty() 之间的情况相同,但发生了一些非常奇怪的事情。我尝试在 createParty-method 中将默认名称插入派对,在第一种情况下,即使用户对象仍然存在,它也会消失,只有用户内的派对属性为 NULL。情况二,当我注销和登录时,它仍然存在并且一切正常。什么会导致这种情况?我已经尝试了一切,我开始感到痛苦和沮丧。

在用户中:

在 USERSCONTROLLER (SessionScoped ManagedBean): public UsersController(Users userEntity) { this.currentUser = userEntity; }


在 CreateParty.xhtml 页面中:

在 LoginFilter.doFilter() 中:

Glassfish 3.1.2 Mojarra 2.1.6 PrimeFaces 3.2 疯狂 1.100%

到底是什么原因造成的,非常感谢您的帮助!我希望你能理解我的解释,即使英语是这样的。萨米人