Как присвоить значение массиву в бэк JSF 2.0 - PullRequest
4 голосов
/ 06 октября 2011

У меня есть новая проблема.У меня есть следующий код в JSF 2.0 с Primefaces 2.2.1:

<h:selectOneMenu id="cmbRole8" value="#{myWorkflow.posToInsert[7]}" >
    <f:selectItem itemLabel="Select a position..." itemValue="-1" />
    <f:selectItems value="#{appPositions.allPositions}" var="ap"
     itemLabel="#{ap.roDescription}" itemValue="#{ap.roPositionid}" />
</h:selectOneMenu>

Это повторяется еще 7 раз для в общей сложности 8 элементов управления selectOneMenu, где мне нужно получить пользовательский ввод.Очевидно, что это не работает, потому что получатели и установщики не знают, какой индекс использовать при назначении значений.Как мне этого добиться?

1 Ответ

4 голосов
/ 06 октября 2011

Очевидно, что это не работает, потому что методы получения и установки не знают, какой индекс использовать при назначении значений.

Это не правда. Возможно, ваша проблема вызвана тем, что вы сами не инициализировали массив. JSF / EL именно не сделает это за вас (как и с любым другим «вложенным объектом»). Он будет устанавливать значение массива только по указанному индексу.

1009 * Е.Г. *

private int[] positions;

@PostConstruct
public void init() {
    positions = new int[3]; // You need to preinitialize it yourself!
}

public int[] getPositions() {
    return positions;
}

// No setter needed!

с

<h:selectOneMenu value="#{bean.positions[0]}" ... />
<h:selectOneMenu value="#{bean.positions[1]}" ... />
<h:selectOneMenu value="#{bean.positions[2]}" ... />
...