내 xhtml에는 숫자 또는 알파벳 값을 입력 할 수있는 입력 필드가 있습니다. 아약스 호출을 사용하여 입력 값의 유효성을 검사하고에 대한 유효성 검사 오류를 던지고 있습니다. 그러나 잘못된 문자와 오류 메시지를 입력 한 후에도 사용자는 여전히 '저장'버튼을 누를 수 있습니다. 사용자가 저장 버튼을 누르면 컨트롤러에 메소드가 트리거됩니다. FacesContext.getCurrentInstance()를 사용하여 컨트롤러 내부의 p : 메시지에서 유효성 검사 오류를 검사 할 수있는 방법이 있습니까?FacesContext를 사용하여 유효성 검사 오류 메시지를 가져 오는 방법은 무엇입니까?
XHTML 코드
<!-- Messages -->
<p:messages id="errorMessages" globalOnly="false" showDetail="true" showSummary="false" closable="true" />
<!-- Column input field-->
<p:column>
<f:facet name="header">
<h:outputText value="Input Amount" escape="false" />
</f:facet>
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{row.amount}" escape="false">
<f:convertNumber maxFractionDigits="3" minFractionDigits="3"
maxIntegerDigits="5" />
</h:outputText>
</f:facet>
<f:facet name="input">
<p:inputText id="input" value="#{row.amount}" maxlength="10"
size="10">
<f:convertNumber maxFractionDigits="3" minFractionDigits="3"
maxIntegerDigits="5" />
<f:validator validatorId="hourlyValueValidator" for="input" />
<p:ajax event="change" partialSubmit="true" process="input"
update=":#{p:component('errorMessages')}" />
</p:inputText>
</f:facet>
</p:cellEditor>
</p:column>
<!-- Save Button -->
<p:commandButton id="btnSubmit" value="Save"
update=":#{p:component('tblScrollPnl')} :#{p:component('errorMessages')}"
action="#{controller.saveValues()}" ajax="true" />
컨트롤러 ViewScope에서
public void saveValues() throws Exception {
FacesContext context = FacesContext.getCurrentInstance();
List<FacesMessage> errorMsgList = context.getMessageList("globalMessages");
......
......
......
}
제안 해 주셔서 감사합니다. 변경되었습니다. 정지 페이지가 잘못된 문자로 제출됩니다. 내 datatable 열에서 cellEditor를 사용합니다. 아마도 사용자가 버튼 페이지를 전송할 때 입력 필드의 유효성을 검사하지 못하게 할 수 있습니다. – Sabarish
대답이 업데이트되었습니다. 작동해야합니다! –
@Saba 지금 작동합니까? –