JSF – изменение действия для h:commandButton (2.0)

StackOverflow https://stackoverflow.com/questions/3807746

  •  25-09-2019
  •  | 
  •  

Вопрос

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

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

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

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

Это было полезно?

Решение

А 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> для этого.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top