簡體   English   中英

素面 <p:calendar> event =“ dateSelect”不起作用

[英]Primefaces <p:calendar> event=“dateSelect” is not working

無論我做什么,都永遠不會調用event =“ dateSelect”中的listener =“#{aufwandDayEditController.initAufwaendeJeTag}”。

這里是方面:

  <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<>();
  }
}

請注意,從參數id =“ mitarbeiter”可以完美地調用不帶參數的偵聽器,但是從分量id =“ tag”都不可以調用它們。 正在正確更新value =“#{aufwandDayEditController.tag}” ...

用調試器檢查了這個...

有什么幫助嗎?

我正在使用PrimeFaces 5.1,NetBeans 8.0.1,...

哦,發現了……看來,a消耗了一個事件,因此只有一個事件(在我的情況下是第二個事件)對此事件做出響應。

解決方案是我必須更改update =“”屬性...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM