您提供的代码似乎没有多大意义。成语更像是这样的:
<h:selectOneMenu value="#{backingBean.typeCode}">
<f:selectItems value="#{backingBean.typeCodes}" var="typeCode" itemLabel="#{typeCode}" itemValue="#{typeCode}" />
</h:selectOneMenu>
这里,#{backingBean.typeCode}
是最初返回表示默认选定值的单个值的属性。如果它为空,则最初不选择任何值。用户提交表单后,会收到用户选择的值。对于您的代码,这将是Long
.
#{backingBean.typeCodes}
是返回用户可以选择的所有值的集合的属性。对于您的代码,这将是List<Long>
.
因为您的值是简单的 long,所以这里的标签和值是相同的。如果它是一个更复杂的对象,例如用户,您可以#{user.name}
对 itemLabel 和#{user.id}
itemValue 使用类似的对象。为 itemValue 渲染的内容就是被推送到组件的值绑定中的selectOneMenu
内容。
另一个提示:一般来说,你应该尽量避免SelectItem
在你的 backing bean 中使用该类型。更喜欢简单的域对象和它们的集合,而不是 JSF 特定类型。