【问题标题】:What is the cause of this error 'javax.faces.FacesException: var attribute must be set' and how to fixed this?这个错误'javax.faces.FacesException:必须设置var属性'的原因是什么以及如何解决这个问题?
【发布时间】:2012-01-05 06:26:09
【问题描述】:

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

堆栈跟踪的一部分..

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>

有没有人遇到过这个问题,请帮忙。 我做了几项研究,但没有找到运气。

谢谢。

【问题讨论】:

  • 你能提供你的h:selectOneMenu的代码吗?
  • 您是否尝试过使用 var 上的 _?只是userVar 例如。还要确保您使用的是最新版本的 seam,特别是如果您使用的是 jsf2.0

标签: jsf-2 seam facelets


【解决方案1】:

这可能有两个原因:

  1. #{myBean.userList} 已返回 null 或一个空列表。
  2. #{_user} 已预先在作用域中声明。

解决它:

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

【讨论】:

  • 你钉它主人 :))..我的视图上有两个 var 属性声明..我更改了我的 var 的另一个名称,错误消失了。thnx
【解决方案2】:

当页面被渲染时会发生这种情况,或者是否有更具体的关于它出现的时间的信息。我的建议是,在没有定义 var 的情况下,您有类似 this 的东西,这会导致错误。尝试查看here 以了解如何使用h:selectOneMenu

【讨论】:

  • 它发生在页面加载时..navigation..my var 属性在 s:selectItems 中设置。有时会出现此错误,有时不会。
猜你喜欢
  • 2021-07-02
  • 2021-01-10
  • 1970-01-01
  • 2023-01-24
  • 1970-01-01
  • 2015-06-13
  • 2021-06-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多