2016-05-20 4 views
1

Я пытаюсь создать форму, в которой пользователь может вводить данные шаг за шагом. Попробовав решение FlowScoped, я попытаюсь реализовать мастер Primefaces.Мастер стилей не выполняет вызов метода onclick

Описание:

Мой main.xhtml:

<h:form id="antragErfassenForm"> 
    <p:wizard showStepStatus="false" widgetVar="wiz" showNavBar="false" > 
     <p:tab id="basic_decision_tab" title="Grundsatzentscheidungen"> 
      <ui:include src="/eAkte/basic_decisions.xhtml" /> 
     </p:tab> 
     <p:tab id="driving_ways_tab" title="Fahrtwegvarianten"> 
      <ui:include src="/eAkte/driving_ways.xhtml" /> 
     </p:tab> 
    </p:wizard> 
</h:form> 

Внутри инклюдников у меня есть кнопки для перемещения между вкладками. Следующая кнопка в первой закладке «» basic_decisions.xhtml:

<p:commandLink value="Next" onclick="#{eAkteController.callDrivingWays()}; PF('wiz').next();" /> 

В зависимости от результата от callDrivingWays() (который оценивает данные на первой вкладке) вкладка второй имеет различное содержание.

Моя проблема:

метод callDrivingWays() не вызывается при нажатии на кнопку Далее на первой вкладке. Вместо этого он уже вызывается, когда загружается первая вкладка. Вот почему у меня всегда есть пустая вторая страница.

Я попытался переключить вызов вызова методаDrivingWays() внутри ActionListener внутри кнопки или диспетчера потока мастера. После этого метод вызывается в нужное время, но при нажатии на следующую кнопку я получаю исключение, что мой идентификатор компонента уже использовался раньше.

Есть ли у кого-нибудь предложения?

+0

атрибут onclick предназначен для выполнения javascript, а не методов на стороне сервера. Скорее всего, у вас есть ошибка в вашем инструменте разработчика вашего браузера – Kukeltje

+0

Итак, мне нужно вернуть метод в actionListener и исправить исключение из двух компонентных идентификаторов? – filla2003

+0

Да, действительно .... И задайте новый вопрос (это на самом деле дубликат некоторых существующих. Нет времени, чтобы узнать, однако – Kukeltje

ответ

0

Попробуйте использовать атрибут flowListener р: мастера

<p:wizard flowListener="#{yourBB.yourMethod}" nextLabel="Next" backLabel="Back" showNavBar="false" widgetVar="myWizard"> 

В вашем бэк-коде боба вместо этого вы можете реализовать ActionListener так:

public String yourMethod(FlowEvent event) { 
    if(event.getOldStep().equals("driving_ways_tab")){} 
    if(event.getNewStep().equals("driving_ways_tab")){} 

вам нужно getOldStep и getNewStep выполнить некоторые изменения в соответствии с вкладкой, которую вы вводите, выходя.

Смежные вопросы