2015-01-19 2 views
0

Что бы я ни пытался, listener = "# {aufwandDayEditController.initAufwaendeJeTag}" события = "dateSelect" в никогда не вызывается.Основные элементы <p:calendar> event = "dateSelect" не работает

Здесь facelet:

<h:head> 
    <title>Aufwand je Tag erfassen</title> 
    <h:outputStylesheet name="css/style.css" /> 
    </h:head> 

    <h:body> 
    <h:form id="form"> 
     <ui:include src="/common/menu.xhtml"/> 

     <p:panel id="panel" header="Aufwand je Tag" style="width: 800px"> 
     <p:panelGrid id="attribute" columns="2"> 
      <p:outputLabel for="mitarbeiter" value="Mitarbeiter:"/> 
      <p:selectOneMenu id="mitarbeiter" 
          value="#{aufwandDayEditController.mitarbeiter}" 
          editable="false" 
          effect="fade" 
          converter="#{mitarbeiterConverter}" 
          required="true" 
          requiredMessage="Mitarbeiter muss angegeben werden!"> 
      <f:selectItems value="#{aufwandDayEditController.mitarbeiterSelectItems}"/> 
      <p:ajax listener="#{aufwandDayEditController.initAufwaendeJeTag}" 
        update="aufwaende"/> 
      <p:ajax update="addRow"/> 
      </p:selectOneMenu> 

      <p:outputLabel for="tag" 
         value="Tag:"/> 
      <p:calendar id="tag" 
         value="#{aufwandDayEditController.tag}" 
         required="true" 
         requiredMessage="Tag muss angegeben werden!" 
         locale="de" 
         navigator="true" 
         yearRange="c-10:c+10"> 
      <p:ajax event="dateSelect" 
        listener="#{aufwandDayEditController.initAufwaendeJeTag}" 
        update="aufwaende"/> 
      <p:ajax event="dateSelect" 
        update="addRow"/> 
      </p:calendar>   

      <p:outputLabel value="Aufwände:" 
         for="aufwaende"/> 
      <p:dataTable id="aufwaende" 
         var="aufwand" 
         value="#{aufwandDayEditController.aufwaendeJeTag}" 
         sortBy="#{aufwand.aktivitaet}" 
         rendered="#{aufwandDayEditController.aufwaendeJeTag != null}" 
         editable="true" 
         editMode="row" 
         resizableColumns="true"> 
      <f:facet name="header">Aufwände</f:facet> 

      <p:ajax event="rowEdit" 
        listener="#{aufwandDayEditController.onRowEdit}" 
        update=":form:message"/> 
      <p:ajax event="rowEditCancel" 
        listener="#{aufwandDayEditController.onRowEditCancel}" 
        update=":form:message"/> 

      <p:column headerText="Aktivität" style="vertical-align: middle;" resizable="true"> 
       <p:cellEditor> 
       <f:facet name ="output"> 
        <h:outputText value="#{aufwand.aktivitaet.toString()}"/> 
       </f:facet> 
       <f:facet name="input"> 
        <p:selectOneMenu value="#{aufwand.aktivitaet}" 
            editable="false" 
            effect="fade" 
            converter="#{aktivitaetConverter}" 
            required="true" 
            requiredMessage="Projektaktivität muss angegeben werden!" 
            style="width:70%; line-height: 85%; text-align: left"> 
        <f:selectItems value="#{aufwandDayEditController.aktivitaetSelectItems}"/> 
        </p:selectOneMenu> 
       </f:facet> 
       </p:cellEditor> 
      </p:column> 

      <p:column headerText="Aufwand [pH]" style="vertical-align: middle;" resizable="true"> 
       <p:cellEditor> 
       <f:facet name="output"> 
        <h:outputText value="#{aufwand.menge}"/> 
       </f:facet> 
       <f:facet name="input"> 
        <p:inputText id="menge" 
           value="#{aufwand.menge}"/> 
       </f:facet> 
       </p:cellEditor> 
      </p:column>    

      <p:column resizable="true"> 
       <p:rowEditor /> 
      </p:column> 
      </p:dataTable> 

      <p:outputLabel/> 
      <p:commandButton id="addRow" 
          icon="add" 
          title="Neue Zeile" 
          value="Neue Zeile" 
          actionListener="#{aufwandDayEditController.onAddRow}" 
          update="aufwaende" 
          disabled="#{aufwandDayEditController.mitarbeiter == null or aufwandDayEditController.tag == null}"/> 
     </p:panelGrid> 

     <p:growl id="message" showDetail="true" showSummary="false"/> 
     </p:panel> 
     <p:commandLink value="Zurück" 
        immediate="true" 
        action="#{aufwandDayEditController.back()}"/> 
    </h:form> 
    </h:body> 
</html> 

А вот интересная часть соответствующего контроллера:

public void initAufwaendeJeTag(Object dummy) { 
    initAufwaendeJeTag(); 
} 

public void initAufwaendeJeTag() { 
    if (mitarbeiter != null && tag != null) { 
    aufwaendeJeTag = aufwandFacade.findByDay(mitarbeiter, tag); 
    } 
    else { 
    aufwaendeJeTag = new LinkedList<>(); 
    } 
} 

Пожалуйста, обратите внимание, что слушатель без параметра называется отлично от компонента ид = «Mitarbeiter» но ни один из них не вызывается из компонента id = "tag". работает правильно, так как значение = "# {aufwandDayEditController.tag}" обновлена ​​...

Проверено это с отладчиком ...

Любая помощь доступна?

Я использую PrimeFaces 5.1, NetBeans 8.0.1 ...

+0

Что там делать. Появляются некоторые перегруженные методы прослушивания, которые [EL не нравится] (http://stackoverflow.com/a/10326655/1391249). – Tiny

+1

Для будущих вопросов: http://stackoverflow.com/help/mcve – BalusC

ответ

0

О, нашел его ... кажется, что потребляет событие так, что только один (в моем случае 2-го один) отвечает на него.

Решение состоит в том, что мне нужно изменить атрибут update = "" ...

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