您给出的代码似乎没有多大意义。成语更是这样的:
<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>
。
因为你的值是简单的长整型,所以标签和值在这里是一样的。如果它是一个更复杂的对象,例如一个用户,您可以对itemLabel使用#{user.name}
,对itemValue使用#{user.id}
。无论为itemValue呈现什么,都会将其推送到组件的值绑定中。
另一个暗示:一般来说,你应该尽量避免在你的后备豆中使用SelectItem
类型。优先选择简单的域对象及其集合,而不是JSF特定类型。
它不是线1和线2之间相当明显的区别:是什么select05NoSelection.initialCollectionValues和select05NoSelection.hobbitList – sergionni
评论更新之间的区别实际上,我对组合有兴趣,但不是在列表框中。 – sergionni
组件的“值”是当前选定的对象,“f:selectItems”的“值”是应出现在列表中的那些值。所有''组件都使用'',包括''。 –
meriton