JSF - изменить действие для h: commandButton (2.0) - PullRequest
3 голосов
/ 28 сентября 2010

Я новичок в JSF 2.0.В последней версии я понимаю, что если я хочу изменить правила о том, «что отправить клиенту», мне просто нужно настроить файл лиц-config.xml.

Теперь, в версии 2.0, как можно управлять действием?Например, если у меня это есть в index.xhtml

<h:commandButton id="submit" value="submit" action="response" />

, и мне нужно вызвать страницу с именем response.html (не xhtml) или эту страницу, помещенную в /folder/response.html, или что-нибудьеще?Как это можно сделать?Я знаю, что JSF 2.0 очень гибок в этом (концепция ссылок href не используется).Так что я думаю, что смогу справиться с этим с помощью других методологий, верно?

1 Ответ

6 голосов
/ 28 сентября 2010

action может указывать на две вещи:

  1. Выражение метода action="#{bean.methodname}", где метод выглядит следующим образом:

    @ManagedBean
    @RequestScoped
    public class Bean {
        public String methodname() {
            // Do some business task here.
            return "response";
        }
    }
    

    После выполнения метода действие будет эффективно содержать возвращаемое значение метода, например: action="response".

    Вы также можете контролировать результат "динамически" обычным способом Java:

    public String methodname() {
        if (someCondition) {
            return "somepage";
        } else {
            return "anotherpage";
        }
    }
    

    В зависимости от исхода условия действие закончится как action="somepage" или action="anotherpage"

  2. Другая страница XHTML в папке , такая же , что и текущая страница XHTML. Вам просто нужно указать имя файла: action="response".

В любом случае он перейдет на страницу XHTML, которая состоит из outcome + ".xhtml", где outcome - это значение действия (например, response.xhtml, somepage.xhtml или anotherpage.xhtml), которое должно быть в том же папка как файл XHTML, содержащий h:commandButton.

Вам не нужно ничего настраивать в faces-config.xml для этого. Ранее, во время возраста JSF 1.x вам нужно было определить <navigation-case> для этого.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...