0

我使用 JSF、RichCalendar 和 a4j。我的问题:我想重新渲染我网站的组件,但是如果有人将一个富日历输入字段的日期编辑为“12.aa.2012”,则会抛出 FacesMessage,这是正确且好的。无论如何,由于未处理的 facesMessages,我的 a4j-rerender-event 没有被触发。在我的 Tomcat 控制台上,我收到此错误消息:

WARNUNG: There are some unhandled FacesMessages, this means not every FacesMessage had a chance to be rendered.
These unhandled FacesMessages are: 
- Bitte ein gültiges Datum eingeben!

我该如何处理这个问题,我尝试了几种方法来显示 errorMessage 并且我可以弄清楚如何显示它,但是仍然有警告并且仍然没有触发重新渲染事件?

提前致谢。

更新:这是我的问题的代码。正如您在选择其中一个单选按钮后看到的那样,将显示一个 dateContainer,例如“admissionDateContainer”。如果您将值更改为“asd”,并选择另一个选项,则不会重新渲染相关框,选项会更改但错误的 dateContainer 会保留在那里?!

<h:panelGroup layout="block" id="caseTypeContainer" rendered="#{CaseController.isFallContainer}" styleClass="fieldContainer">
    <t:outputLabel for="caseType" styleClass="generalInputLabel" style="width:200px; float:left;" value="#{resources.labels['caseType']}:" title="#{resources.labels['caseType']}" />
    <h:selectOneRadio id="caseType" style="font-size:13px;" value="#{CaseController.caseType}" styleClass="radioButtonTableMasterdata inlineBlock">
    <f:selectItem itemValue="#{resources.labels['caseTypeDocAttrStationaer']}" itemLabel="#{resources.labels['caseTypeDocAttrStationaerLabel']}" />
    <f:selectItem itemValue="#{resources.labels['caseTypeDocAttrAmbulant']}" itemLabel="#{resources.labels['caseTypeDocAttrAmbulant']}"/>
    <f:selectItem itemValue="#{resources.labels['caseTypeDocAttrUnbekannt']}" itemLabel="#{resources.labels['caseTypeDocAttrUnbekannt']}"/>
    <a4j:support oncomplete="initializeFocusBlurEvents(); " event="onchange" reRender="captureDateContainerDiv, admissionDateContainerDiv, dischargeDateContainerDiv, messagesContainer, warnings"/>
    </h:selectOneRadio>
</h:panelGroup>
<t:div id="admissionDateContainerDiv">
    <h:panelGroup layout="block" id="admissionDateContainer" rendered="#{CaseController.isCaseTypeStationaerOrAmbulant}" styleClass="fieldContainer  showDateInputWithTime">
        <t:outputLabel for="admissionDate" rendered="#{CaseController.isCaseTypeStationaer}" styleClass="generalInputLabel" style="width:200px;" value="#{resources.labels['caseAdmissionDateStationaer']}:" title="#{resources.labels['caseAdmissionDateStationaer']}" />
    <t:outputLabel for="admissionDate" rendered="#{CaseController.isCaseTypeAmbulant}" styleClass="generalInputLabel" style="width:200px;" value="#{resources.labels['caseAdmissionDateAmbulant']}:" title="#{resources.labels['caseAdmissionDateAmbulant']}" />
    <rich:calendar id="admissionDate" value="#{CaseController.caseContainerAdmissionDate}" datePattern="dd.MM.yyyy HH:mm" enableManualInput="true" direction="auto">
        <f:facet name="footer">
        <h:panelGrid columns="3" width="100%" columnClasses="fake, width100 talign">
        <h:outputText value="{selectedDateControl}" style="font-weight:bold;" />
    <h:outputText value="{timeControl}" style="font-weight:bold;" />
    <h:outputText value="{todayControl}" style="font-weight:bold;" />
        </h:panelGrid>
    </f:facet>
    </rich:calendar>
    <rich:message for="admissionDate"  />
</h:panelGroup>
</t:div>
<t:div id="messagesContainer" rendered="true"> 
    <p>Messages global</p>
<rich:messages global="true" />
</t:div>
4

1 回答 1

3

添加<rich:messages<rich:message到您的页面

看看rich:messagesrich:message

还要确保他们rendered在你button被点击之后......将他们的 id 或他们的包装(@form例如)id 添加到reRender你的日历中

于 2012-06-19T11:41:23.567 回答