JSF-未处理的faces消息阻止视图重新提交
我使用JSF、RichCalendar和a4j。我的问题是:我想重新提交我网站的组件,但如果有人将一个丰富日历输入字段的日期编辑为'12.aa.2012',则会抛出一条FacesMessage,这是正确且正确的。无论如何,由于未损坏的facesMessages,没有触发我的a4j重新渲染事件。在我的Tomcat控制台上,我收到以下错误消息:JSF-未处理的faces消息阻止视图重新提交,jsf,richfaces,Jsf,Richfaces,我使用JSF、RichCalendar和a4j。我的问题是:我想重新提交我网站的组件,但如果有人将一个丰富日历输入字段的日期编辑为'12.aa.2012',则会抛出一条FacesMessage,这是正确且正确的。无论如何,由于未损坏的facesMessages,没有触发我的a4j重新渲染事件。在我的Tomcat控制台上,我收到以下错误消息: WARNUNG: There are some unhandled FacesMessages, this means not every FacesMes
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,并且我知道如何显示它,但是仍然存在警告和未触发的Reender事件
提前谢谢
更新:这是我问题的代码。正如您选择其中一个单选按钮后所看到的,将显示一个日期容器,例如“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>
全球信息
AddAdd谢谢,我读了rich:message,rich:messages,并尝试了许多重新播放的组合。。。仍然没有成功。我添加了一个代码示例,这可能有助于找到解决方案。要检查错误,请尝试仅重新呈现@form或event biger wrapper(而不是多个ID…)谢谢Daniel,不幸的是仍然没有成功。我将表单id添加到select字段的RERERENDER属性中。我可以看到呈现的FacesMessage。我最后一次尝试是查找RichFaces日历类并尝试阻止消息创建。这是最糟糕的办法,但我没有其他想法。这些消息是在哪里创建/抛出的?谢谢,我读了rich:message,rich:messages,并尝试了许多重新播放的组合。。。仍然没有成功。我添加了一个代码示例,这可能有助于找到解决方案。要检查错误,请尝试仅重新呈现@form或event biger wrapper(而不是多个ID…)谢谢Daniel,不幸的是仍然没有成功。我将表单id添加到select字段的RERERENDER属性中。我可以看到呈现的FacesMessage。我最后一次尝试是查找RichFaces日历类并尝试阻止消息创建。这是最糟糕的办法,但我没有其他想法。消息是在哪里创建/抛出的?