我在应用程序中遇到了这个问题。奇怪的是,这个错误在我启动应用程序的某个时刻弹出,但有时不会。
堆叠跑道的那块。。
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>
有人遇到这个问题吗?请帮忙。我做了几项研究,但没有发现运气。
谢谢。
这可能有两个原因:
#{myBean.userList}
已返回null
或空列表#{_user}
已预先在作用域中声明
解决方法:
- 确保
#{myBean.userList}
不返回null
,也不为空 - 请确保您没有在视图中的其他任何位置使用
#{_user}
。给它取一个不同的名字
在呈现页面时会发生这种情况吗?或者它出现的时间有更具体的信息吗。我的建议是,在某个地方,你有这样的东西,但没有定义var
,这会导致错误。请尝试查看此处以了解如何使用h:selectOneMenu
。