2014-01-03 2 views
1

У меня есть один .xhtml файл с primefaces и иметь одну форму с одной CommandButton при попытке уволить ActionListener делает это не работает, форма:ActionListener не JSF и primefaces работает

<h:form id="formCreate"> 
       <p:dialog header="Crear" widgetVar="usuarioDlgCreate" resizable="false" id="usuDlgCreate" 
          showEffect="fade" hideEffect="explode" modal="true"> 

        <h:panelGrid id="display" columns="2" cellpadding="4" style="margin:0 auto;"> 

         <h:outputText value="Rol:" /> 
         <p:inputText value="#{usuarioBean.usuarioSeleccionado.rolId}"/> 

         <h:outputText value="Nombre:" /> 
         <p:inputText value="#{usuarioBean.usuarioSeleccionado.nomUsuario}"/> 


         <h:outputText value="Email:" /> 
         <p:inputText value="#{usuarioBean.usuarioSeleccionado.email}" size="30"/> 

         <f:facet name="footer"> 
          <p:separator/> 
          <p:commandButton id="btnNewAccept" actionListener="#{usuarioBean.create(actionEvent)}" title="Guardar" value="Guardar"/> 
          <p:commandButton id="btnNewCancel" oncomplete="usuarioDlgCreate.hide()" icon="ui-icon-new" title="Cancelar" value="Cancelar"/> 
         </f:facet> 
        </h:panelGrid> 

       </p:dialog> 

      </h:form> 

и это мой метод компонента:

public void create(ActionEvent actionEvent) { 
    UsuarioDao usuarioDao = new UsuarioDaoImplements(); 
    String msg = null; 
    if(usuarioDao.create(this.usuarioSeleccionado)) { 
     msg = "Información guardada correctamente"; 
    } else { 
     msg = "No ha sido posible almacenar la información"; 
    } 

    FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, msg, null); 
    FacesContext.getCurrentInstance().addMessage(null, message); 
} 

уже пытались с помощью кнопки, как:

и метод без параметра ActionEvent:

и как это тоже (без скобок):

но не срабатывает метод, мольбы помочь мне .... спасибо много

ответ

0

Ну, я решил это, кажется Primefaces 3.5 и Glassfish 4.0 работает не очень хорошо, поэтому я изменил его на Primefaces 4.0, и он работает.

0

Первое, вы должны изменить ваш атрибут: actionListener="#{usuarioBean.create}".

Во-вторых, убедитесь, что вы используете javax.faces.event.ActionEvent.

Если он все еще не работает, вы должны проверить наличие ошибок проверки, попробуйте добавить h:messages, чтобы узнать, не получилось ли что-то не так.

+0

Итак, мой метод bean не нуждается в параметре (ActionEvent)? Я использую: import javax.faces.event.ActionEvent; –

+0

Нет, это подпись 'actionListener'. Параметр имеет сам JSF. –

+0

Я положил: в мою форму, но ничего не показываю, не запускает событие, не знаю, что еще я могу сделать, если я проверю консоль firebug: , но не вызывается метод –

1

У меня есть аналогичная проблема, actionListener не срабатывал, когда я использовал компонент как объект выражения значения. Отправить не удалось, и сообщение об ошибке не появилось (также не было зарегистрировано). Поэтому я меняю выражение значения на простую переменную: integer, string и т. Д. И после этого работаю для меня.

перед:

<p:selectOneMenu value="#{formCalendarDay.airplane}"> 
    <f:selectItems value="#{classifiers.airplanes}" var="airplane" itemLabel="#{airplane.name}" itemValue="#{airplane}"/> 
</p:selectOneMenu> 

после исправления:

<p:selectOneMenu value="#{formCalendarDay.airplaneId}"> 
    <f:selectItems value="#{classifiers.airplanes}" var="airplane" itemLabel="#{airplane.name}" itemValue="#{airplane.id}"/> 
</p:selectOneMenu> 
0

Попробуйте поставить свою форму внутри диалога - не наоборот

+0

Ну, я решил это, это, кажется, что Priemfaces 3,5 и 4,0 Glasfish не очень хорошо-технические работы, поэтому я chabged по primefaces 4.0 и работает. –

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