Параметры запроса JSF2 CommandButton Action

<h:commandButton value="Add Order"  action="#{orderBasket.addItems(param['orderItemId'])}"/>

Я не могу заставить вышеперечисленное работать... когда вы нажимаете кнопку, параметр, кажется, устанавливается равным нулю. Есть ли способ обойти это?

Есть ли другой способ передать параметры URL в метод действия? Я использую преобразователь Spring EL, который ограничивает мою способность передавать параметры в bean-компоненты, поскольку я не использую Faces-config.


person DD.    schedule 12.05.2011    source источник


Ответы (1)


Во-первых, я думаю, что вы могли бы лучше использовать JSF, многие проблемы были бы намного проще. Похоже, вы используете JSF в качестве платформы запроса/ответа, например Struts. JSF — это объектно-ориентированный компонентный фреймворк, и вы должны использовать его таким образом, чтобы получить от него максимум пользы.

Я попытаюсь решить вашу проблему, но мне не хватает информации о том, что вы делаете.

Если у вас есть список книг, которые вы можете заказать, скажем, они отображаются в таблице данных (вместо этого вы можете использовать ui:repeat):

<h:dataTable value="#{bookController.books}" var="book">

    <h:column>
        <h:outputText value="#{book.title}" />
    </h:column>

    <h:column>
        <h:commandButton value="Add Order" action="#{orderBasket.addItems(book)}" />
    </h:column>

</h:dataTable>

В компоненте поддержки orderBasket вы просто берете книгу (или что-то еще) в качестве параметра. Вам не нужно обрабатывать цикл запроса/ответа, конечно, не в ваших представлениях.

Вы можете использовать тег f:ajax, если вам нужно немедленно отобразить его в корзине.

Дайте мне знать, если вам нужно больше объяснений (источник поддержки bean-компонентов или что-то еще).

person ymajoros    schedule 12.05.2011
comment
Спасибо, но я предпочитаю контролировать состояние через URL-адрес, чтобы можно было делать закладки и навигацию с помощью кнопки «Назад» в браузере. Любая идея по проблеме выше? Ваше здоровье. - person DD.; 12.05.2011
comment
Может быть, попробуйте простое примерное приложение без Spring, чтобы увидеть, не виновато ли оно. Возможно, используйте f:viewParam, чтобы получить реальный объект при загрузке страницы. Или PrettyFaces. - person ymajoros; 12.05.2011