2012-06-19 3 views
0

저는 JSF, RichCalendar 및 a4j로 작업합니다. 내 문제 : 내 웹 사이트의 구성 요소를 다시 렌더링하고 싶지만 다른 사람이 하나의 리치 캘린더 입력란의 날짜를 '12 .aa.2012 '로 수정하면 FacesMessage가 발생합니다. 이는 정확하고 좋습니다. 어쨌든 내 a4j-rerender-event는 처리되지 않은 얼굴 때문에 트리거되지 않았습니다. 메시지. 내 톰캣 콘솔에 나는이 ERRORMESSAGE 얻을 :이 문제를 처리 할 수있는 방법JSF - 처리되지 않은 얼굴 메시지로 인해 뷰 다시 렌더링되지 않습니다.

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와 I를 보여줄 수있는 몇 가지 방법을 시도했지만 여전히 계속 경고하고있다 트리거되지 않은 rerender-event? 사전에

감사합니다.

업데이트 : 여기 내 질문에 대한 코드가 있습니다. 라디오 버튼 중 하나를 선택하면 알 수 있듯이 'admissionDateContainer'와 같은 하나의 dateContainer가 표시됩니다. 값을 '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> 

답변

3

페이지

<rich:messages 또는 <rich:message를 추가하는 ... button 클릭되는 당신의 후 rich:messages을보고 rich:message 또한

rendered되는 있는지 확인을 받아 자신의 ID를 추가하거나 그들의 래퍼 (예 : @form)는 에 해당합니다.

+0

감사합니다. rich : message, rich : m 에세지와 재배치의 조합을 많이 시도했습니다 ... 여전히 성공하지 못했습니다. 코드 예제를 추가했습니다. 아마도 해결책을 찾는 데 도움이 될 것입니다. – Jochen

+0

무엇이 잘못되었는지 확인하기 위해 @form을 렌더링하거나 이벤트가 더 큰 래퍼 (복수의 ID 대신 ..) – Daniel

+0

대니얼에게 감사합니다. 불행히도 성공하지 못했습니다. select 필드의 rerender-attribute에 form-id를 추가했습니다. 렌더링 된 FacesMessage를 볼 수 있습니다. 마지막으로 RichFaces-Calendar 클래스를 찾고 메시지 작성을 방지하려고합니다. 그것은 가능한 최악의 방법이지만 다른 생각은 없습니다. 메시지는 어디에서 생성 되었습니까? – Jochen

관련 문제