Статьи

JSF: Передача параметров в методы действий JSF со страницы напрямую, хорошая функция JavaEE 6+

Одна из приятных функций JSF 2+, представленных в Java Enterprise Edition JavaEE 6+, заключается в том, что вы можете передавать параметры любому методу действия компонентов действия, например, компонентам commandButton или commandLink .


Исходя из этого, вы можете минимизировать количество методов внутри вашего управляемого компонента.

Кроме того, чтобы минимизировать множество параметров, устанавливаемых внутри bean-компонента, который будет использоваться действием для определения логики навигации, что уменьшит потребление памяти, если ваши bean-объекты в областях больше, чем область запроса.

Как это работает:

  1. Откройте вашу любимую IDE, я собираюсь использовать Netbeans 7.4.1 . (Используйте любую IDE, которая поддерживает JavaEE 6 или 7).
  2. Создать веб-проект.
    Файл -> Новый проект -> Java Web (левая панель) -> Веб-приложение (правая панель) -> Далее.
  3. Назовите его как угодно ( JSFeatures для меня) -> Далее -> Сервер Glassfish4 -> Веб- профиль Java EE 7 -> Контекстный путь «/ JSFeatures» -> Далее.

    JSF-ПОДВИГ-01

  4. В рамках выберите « Java Server Faces » -> « Готово».

    JSF-ПОДВИГ-02

  5. У вас должна быть такая структура проекта:

    JSF-ПОДВИГ-03

  6. Щелкните правой кнопкой мыши по проекту JSFeatures -> новый « JSF Managed Bean ». и его имя и конфиг, как это:

    JSF-ПОДВИГ-04

  7. Открыв компонент на странице редактора, скопируйте и вставьте следующий код после оператора пакета:
    01
    02
    03
    04
    05
    06
    07
    08
    09
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    import javax.faces.bean.ManagedBean;
    import javax.faces.bean.RequestScoped;
      
    /**
     * @author mohamed_taman
     */
    @ManagedBean(name = "jSFeatBean")
    @RequestScoped
    public class JSFeatursBean {
      
        private String result;
      
        public String getResult() {
            return result;
        }
      
        public void setResult(String result) {
            this.result = result;
        }
      
        public JSFeatursBean() {
        }
      
        public Object addNumbers(int num1,int num2) {
                setResult("Hi there I am an action method to add numbers.");
            return null;
        }
    }
  8. Откройте файл index.xhtml, который создается по умолчанию, и скопируйте следующий код и вставьте его в свой файл:
    01
    02
    03
    04
    05
    06
    07
    08
    09
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    <?xml version='1.0' encoding='UTF-8' ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
          xmlns:h="http://xmlns.jcp.org/jsf/html">
        <h:head>
            <title>Facelet Title</title>
        </h:head>
        <h:body>
            Hello from Facelets
            <h:form>
                <p>
                    <h:outputText value="#{jSFeatBean.result}"/>
                </p>
    <h:commandButton type="submit"
                     value="Submit"
                     action="#{jSFeatBean.addNumbers}"/>
            </h:form>
        </h:body>
    </html>
  9. Щелкните правой кнопкой мыши на index.xhtml, затем -> Выполнить ; вы должны увидеть что-то вроде этого:

    JSF-ПОДВИГ-05

  10. Нажмите кнопку отправки и просмотрите значение h: outputText , его значение должно быть « Привет, я метод действия. «
  11. Сейчас все работает нормально. Давайте сделаем ту работу, которую мне нужно продемонстрировать.
  12. Измените подпись метода addNumbers () на следующую ( без перезапуска сервера приложений ):
    1. Метод бобов:
      01
      02
      03
      04
      05
      06
      07
      08
      09
      10
      public Object addNumbers(int num1) {
            int res = 0;
            res = num1;
            if (res == 0) {
                setResult("Hi there I am an action method to add numbers.");
            } else {
                setResult("Final result is: " + res);
            }
            return null;
        }
    2. Тогда ваша кнопка звонит:
      1
      2
      3
      <h:commandButton type="submit"
                       value="Submit"
                       action="#{jSFeatBean.addNumbers(1)}"/>
    3. Нажмите кнопку и выведите текстовое значение должно быть:
      1
      Final result is: 1
  13. Сделайте это еще раз:
    1. Метод бобов:
      01
      02
      03
      04
      05
      06
      07
      08
      09
      10
      public Object addNumbers(int num1, int num2) {
            int res = 0;
            res = num1 + num2;
            if (res == 0) {
                setResult("Hi there I am an action method to add numbers.");
            } else {
                setResult("Final result is: " + res);
            }
            return null;
        }
    2. Тогда ваша кнопка звонит:
      1
      2
      3
      <h:commandButton type="submit"
                       value="Submit"
                       action="#{jSFeatBean.addNumbers(1,2)}"/>
    3. Нажмите кнопку и выведите текстовое значение должно быть:
      1
      Final result is: 3

Примечание: параметр может быть с другим типом параметров, который, как ожидается, не будет одного типа, также метод может возвращать значение для перехода на другие страницы, в этом примере он возвращает значение null, чтобы быть на той же странице.

Мне очень понравилась эта функция, она мне очень понравилась, очень полезна и удобна, а также приятное кодирование.

Ресурсы: