#jsf #primefaces #selectonemenu
Вопрос:
Я хочу передать параметр, чтобы получить значения для f:SelectItem внутри p:selectOneMenu. (Я использовал это p:selectOneMenu внутри пользовательского интерфейса:повтор)
Значения, которые будут заполнять меню «Выбрать один», необходимо изменить в зависимости от параметра, переданного компоненту.
Я попытался сделать следующее, но ошибка возникает как «Класс не имеет свойства «proceduresPerformedInAProcedureRoom».
Как я могу этого достичь ?
Файл JSF
<table >
<tr>
<td>
<p:outputLabel value="Room" ></p:outputLabel>
</td>
<td>
<p:selectOneMenu value="#{ii.ci.institutionValue}" >
<f:selectItem itemLabel="Please select" ></f:selectItem>
<f:selectItems value="#{webUserController.loggableProcedureRooms}"
var="ipr"
itemLabel="#{ipr.name}"
itemValue="#{ipr}">
</f:selectItems>
<f:ajax event="change" execute="@this" render="prM lblPrM" ></f:ajax>
</p:selectOneMenu>
</td>
</tr>
<tr>
<td>
<p:outputLabel id="lblPrM" value="Procedures for #{ii.ci.institutionValue}" ></p:outputLabel>
</td>
<td>
<p:selectOneMenu id="prM" value="#{ii.addingItem.ci.itemValue}" >
<f:selectItem itemLabel="Please select" ></f:selectItem>
<f:selectItems value="#{relationshipController.proceduresPerformedInAProcedureRoom}"
var="li"
itemLabel="#{li.displayName}"
itemValue="#{li}">
<f:param name = "procedureRoom" value = "#{ii.ci.institutionValue}" />
</f:selectItems>
</p:selectOneMenu>
</td>
</tr>
</table>
Контроллер
public List<Item> proceduresPerformedInAProcedureRoom(Institution procedureRoom){
List<Relationship> rs = findRelationships(institution, RelationshipType.Procedure_for_institution);
List<Item> ps = new ArrayList();
for(Relationship r:rs){
ps.add(r.getItem());
}
return ps;
}
Комментарии:
1. Не используйте параметр, но получите заданное значение из (другого) компонента.
2. в чем дело
<f:selectItems value="#{relationshipController.proceduresPerformedInAProcedureRoom(ii.ci.institutionValue)}"
?3. Ты не появился
ui:repeat
. Я догадалсяii
, что это вашvar
входui:repeat
.4. не могли бы вы переименовать его в «getProceduresPerformedInAProcedureRoom»?
5. Хм, я думаю, это должно быть правильно. Даже без
get
приставки. Вы получаете какие-либо сообщения об ошибках? Есть какие-нибудь намеки?