Glassfish 4.0 с Primefaces 5.0 автоматически запускает все методы

#java #python #jsf #primefaces #glassfish-4

#java #python #jsf #primefaces #glassfish-4

Вопрос:

Я развертываю свой маленький веб-сайт на glassfish, и у меня есть метод 2, который запускает файл python. Метод one просто запускает файл python, не более того. Когда я захожу на сайт, он автоматически вызывает все функции…

 public void reservate() {
        System.out.println("ALMAAA");
        String start, end;
        start = time1.substring(0,5);
        end = time1.substring(6,11);
        reserv = new Reservation("ASD", room, "19.00", "20.00");
        reserv.getOutput();
    }



<p:commandLink value="#{navigationTo.time1button}" onclick="#{navigationTo.reservate()}" style="font-size: 300%"/>
  

Reservu.getOutput() запускает файл и запускает файл python. Если я просто получаю доступ к этому сайту, даже если я не нажимаю на эту ссылку actionlink, это запускает everyting и делает резервирование…

Я хочу запускать этот файл python только при нажатии на ссылку commadn.

Есть предложения?

Комментарии:

1. onclick это не то место, которое нужно иметь #{navigationTo.reservate()} . Какова цель navigationTo.time1button ? Разве reservate у вас там нет функции?

2. navigationTo.time1button возвращает строку, отображаемую по этой ссылке, но я хочу запустить этот метод резервирования только при нажатии на него. Но теперь он всегда запускается, когда вы просто загружаете эту страницу. Это моя проблема.

3. Я оговорился, когда предложил вам переместить {navigationTo.reservate} в value атрибут, но моя предыдущая рекомендация остается в силе: #{navigationTo.reservate()} не должно быть в onclick атрибуте; оно должно быть в action атрибуте

4. Я только что получил информацию о том, как это работает, и проблема в том, что primefaces при создании клиентской части автоматически вызывает все методы для создания статического сайта. Вот почему он так называется. Единственный способ сделать это в pirmefaces, когда вы создаете его как Commandbutton / link и указываете это в ActionListener. Это единственное, что вызывается после того, как вы нажали, а не раньше.