[英]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.