2015-11-02 2 views
0

У меня возникли проблемы с праймерами selectonemenu, он отображает только cube.name (в раскрывающемся списке имеется слово cub.name, а не значение cube.name), вот код.selectonemenu не отображает значение из bean

<p:selectOneMenu id="cubeConfigId" value="#{projectModel.selectedProject.cubeConfigId}" > 
    <f:selectItem itemLabel="Select One" itemValue="" /> 
    <f:selectItems value="#{projectModel.cubeConfigEntities}" var="cube" itemLabel="cube.name" itemValue="cube.cubeConfigId"/> 
    </p:selectOneMenu> 

что именно делает var = "cube"?

ответ

3

Вы получили itemLabel="cube.name" вместо itemLabel="#{cube.name}" (то же самое для itemValue).

Что отображается определяются itemLabel="cube.name" так что вы видите, что вы получили в этикетке - в данном случае это только имя (если вы делаете что-то вроде этого itemLabel="#{cube}" - toString() будет отображаться на Cube лиц). То, что сохраняется в бэк-бэнде, находится под itemValue.

var="cube" это просто итератор для value="#{projectModel.cubeConfigEntities}". Если cubeConfigEntities является списком Cube объектов, то var="cube" является Cube в одной итерации цикла, в другой итерации цикла требуется еще Cube из списка и т. Д. Вы можете получить доступ к методам Cube, вызвав их на cube.

+0

Спасибо, что это сработало и спасибо за ответ var. Я никогда не думал об этом как об итераторе, но теперь это имеет смысл. благодаря – snafua

Смежные вопросы