h: commandButton НЕ МОЖЕТ передавать параметры в поддерживающий компонент - PullRequest
2 голосов
/ 14 сентября 2010

Я хотел бы передать значение ключа для моего компонента поддержки, чтобы я знал, кто из пользователей коллекции пытается обновить.Я думаю, что мне нужно использовать f: param для этого, но как-то это не работает.Это значение будет просто отлично отображаться, если я буду использовать af: commandButton вместо h: commandButton.

Вот моя кнопка:

<h:commandButton styleClass="cntctmBtn" value="Update" action="#{pullForm.updateDependent}">
   <f:param name="selectedIndex" value="#{loop.index}" />
   <f:param name="selectedEDI" value="#{eachOne.identifier.dodEdiPnId}" />
</h:commandButton>

и вот как я пытаюсь получить отправленныйзначения.

FacesContext context = FacesContext.getCurrentInstance();
Map map = context.getExternalContext().getRequestParameterMap();
String edi_tmp = (String)map.get("selectedEDI");

Но я получил исключение ArrayIndexOutOfBound, пожалуйста, помогите, спасибо.

1 Ответ

3 голосов
/ 14 сентября 2010

Если кнопка находится внутри <h:dataTable> или любого другого компонента UIData, то вы должны получить «текущий» объект строки по UIData#getRowData() или DataModel#getRowData(). Нет необходимости передавать идентификатор строки как параметр или около того.

* 1013 Е.Г. *

@ManagedBean
@ViewScoped
public class Bean {
    private List<Person> persons;
    private DataModel<Person> personModel;

    public Bean() {
        persons = loadItSomehow();
        personModel = new ListDataModel<Person>(persons);
    }

    public void update() {
        Person selectedPerson = personModel.getRowData(); // There it is.
        // ...
    }

    // Add/generate getters/setters/etc.
}

с

<h:form>
    <h:dataTable value="#{bean.personModel}" var="person">
        <h:column>
            <h:commandButton value="update" action="#{bean.update}" />
        </h:column>
    </h:dataTable>
</h:form>

Будьте проще.

Смотри также:

...