这个错误的原因是什么'javax.faces.FacesException:必须设置var属性'以及如何修复它?

时间:2012-01-05 06:26:09

标签: jsf-2 seam facelets

我在我的应用中遇到了这个问题。奇怪的部分是这个错误弹出窗口在我开始我的应用程序的某个时刻,但有时它没有。

堆栈跟踪的一部分..

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>

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

感谢。

2 个答案:

答案 0 :(得分:2)

这可能有两个原因:

  1. #{myBean.userList}已返回null或空列表。
  2. #{_user}已预先在范围内声明。
  3. 要解决它:

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

答案 1 :(得分:1)

在呈现页面时是否会发生这种情况,或者在出现页面的时候会出现更具体的内容。我的建议是在某个地方你有this而没有定义var的东西,这会导致错误。尝试查看here,了解如何使用h:selectOneMenu