我有2個組分(選擇和inputText的),其中的值是依賴於彼此。例如,如果選擇「選項1」,則inputText必須是數字。使用JSF結合+在同一組件中顯示的消息驗證兩次
以我豆我已經添加的屬性2層的組件結合和驗證方法,而在我的jsp已添加「驗證」和「綁定」屬性來選擇和「結合」到的inputText。
我用結合得到兩種成分的驗證提交的值。
這是正確的方法嗎?是否有替代方法來獲取提交的值?
這樣做的結果是被示出重複的消息。如果我從select中刪除綁定屬性,那麼它按預期工作,但我無法獲取選定的值,而是使用緩存值(會話中的bean值)。
在此先感謝。
aalmero
代碼:
<p:selectOneMenu
value="# {deploymentRequestViewBean.deploymentRequestDTO.deploymentRequest.requestLevel}"
id="requestLevel" required="true" label="requestLevel"
validator="#{deploymentRequestViewBean.validateRequestDate}">
<p:ajax listener="#{deploymentRequestViewBean.processRequestLevelValueChanged}"
binding="#{deploymentRequestViewBean.requestLevelSelectOne}"/>
<f:selectItem itemValue="" itemLabel="Select One" />
<f:selectItem itemValue="DEV" itemLabel="DEV" />
<f:selectItem itemValue="QUA" itemLabel="QUA" />
<f:selectItem itemValue="PRD" itemLabel="PRD" />
</p:selectOneMenu>
<p:calendar
value="#{deploymentRequestViewBean.deploymentRequestDTO.deploymentRequest.deployDate}"
id="deployDate" required="true" label="deployDate" showOn="button" pattern="yyyy- MM-dd" binding="#{deploymentRequestViewBean.requestDateInput}"/>
<p:spacer width="10" height="10" />
//for component-binding
private UISelectOne requestLevelSelectOne;
private UIInput requestDateInput;
//validation method
public void validateRequestDate(FacesContext facesContext,
UIComponent component, Object newValue){
//get the current value of select;
requestLevelSelectOne.getSubmittedValue();
//get the current vallue of input;
requestDateInput.getSubmittedValue()
if(not valid combination){
facesContext.addMessage(requestDateInput.getClientId(facesContext), new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error", selectedLevel + " deployment request requires at least 2 days."));
throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error", "Deployment date must be at least 2 days."));
}
}
向我們展示一些代碼,請.. – Catfish 2012-07-26 20:36:35