出现这个错误的原因是什么“javax.faces.FacesException: var attribute must be set”以及如何解决这个问题?

发布于 2024-12-25 09:15:12 字数 1089 浏览 1 评论 0原文

我在我的应用程序中遇到了这个问题。奇怪的是,在我启动应用程序的某个时刻,会弹出此错误,但有时却不会。

堆栈跟踪的一部分..

javax.faces.FacesException: var attribute must be set
    at org.jboss.seam.ui.component.UISelectItems$ContextualSelectItem.<init>(UISelectItems.java:58)
    at org.jboss.seam.ui.component.UISelectItems$1.<init>(UISelectItems.java:219)
    at org.jboss.seam.ui.component.UISelectItems.asSelectItems(UISelectItems.java:195)
    at org.jboss.seam.ui.component.UISelectItems.getValue(UISelectItems.java:178)
    at com.sun.faces.renderkit.RenderKitUtils.getSelectItems(RenderKitUtils.java:289)
    at com.sun.faces.renderkit.html_basic.MenuRenderer.renderSelect(MenuRenderer.java:814)
    at com.sun.faces.renderkit.html_basic.MenuRenderer.encodeEnd(MenuRenderer.java:280)

我认为错误的根源与 h:selectOneMenu 有关,但我在 selectItems 中正确定义了 var 属性。

<h:selectOneMenu value="#{myBean.user}">
   <s:selectItems value="#{myBean.userList}" var="_user" label="#{_user.name}" />
</h:selectOneMenu>

有谁遇到过这个问题请帮忙。 我做了一些研究,但没有找到运气。

谢谢。

I encountered this problem in my apps. The weird part was this error popups at some moment i started my apps but sometimes it does not.

The piece of the stacktrace..

javax.faces.FacesException: var attribute must be set
    at org.jboss.seam.ui.component.UISelectItems$ContextualSelectItem.<init>(UISelectItems.java:58)
    at org.jboss.seam.ui.component.UISelectItems$1.<init>(UISelectItems.java:219)
    at org.jboss.seam.ui.component.UISelectItems.asSelectItems(UISelectItems.java:195)
    at org.jboss.seam.ui.component.UISelectItems.getValue(UISelectItems.java:178)
    at com.sun.faces.renderkit.RenderKitUtils.getSelectItems(RenderKitUtils.java:289)
    at com.sun.faces.renderkit.html_basic.MenuRenderer.renderSelect(MenuRenderer.java:814)
    at com.sun.faces.renderkit.html_basic.MenuRenderer.encodeEnd(MenuRenderer.java:280)

I think the source of my error has something to do with h:selectOneMenu but i defined my var attribute correctly in my selectItems.

<h:selectOneMenu value="#{myBean.user}">
   <s:selectItems value="#{myBean.userList}" var="_user" label="#{_user.name}" />
</h:selectOneMenu>

Has anyone encountered this problem please help.
I've done a couple of research but found no luck.

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

被你宠の有点坏 2025-01-01 09:15:12

这可能有 2 个原因:

  1. #{myBean.userList} 返回了 null 或空列表。
  2. #{_user} 已在范围内预先声明。

解决方法:

  1. 确保 #{myBean.userList} 不返回 null 也不为空。
  2. 确保您没有在视图中的其他任何地方使用 #{_user}。给它一个不同的名字。

This can have 2 causes:

  1. The #{myBean.userList} has returned null or an empty list.
  2. The #{_user} is already been declared beforehand in the scope.

To solve it:

  1. Make sure that #{myBean.userList} does not return null nor is empty.
  2. Make sure that you haven't used #{_user} anywhere else in the view. Give it a different name.
满身野味 2025-01-01 09:15:12

这种情况是在渲染页面时发生的,还是在发生这种情况时有更具体的情况。我的建议是,在某个地方您可以有类似 this 的内容,而无需定义的 var 会导致错误。尝试在此处查看如何使用h:selectOneMenu

Does this happen when a page is rendered or is there something more specific about the times when it arises. My suggestion is that somewhere you have something like this without the var defined and this causes the error. Try looking here to see how to use h:selectOneMenu.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文