2011-09-15 1 views
2

JSR-303 유효성 검증 빈이있는 도메인 모델이있는 양식이 있습니다. 이제는 유효성 검사없이 "초안 저장"기능을 포함하고 싶습니다. 내 해당 commandButton 유효성을 immediate=true으로 설정하면 유효성 검사가 생략되고 양식도 제출됩니다.빈 검증없이 양식 제출

내 초안 저장 작업에서 모델을 업데이트 할 수있는 방법이 있습니까?

답변

4

<f:validateBean>을 사용하면 disabled 속성을 설정합니다. 이 true를 평가되면

<h:inputText value="#{bean.input}"> 
    <f:validateBean disabled="#{bean.draft}" /> 
</h:inputText> 

이 입력 값과 관련된 재산의 모든 콩 유효성 검사를 건너 뜁니다. 유효성 검사 단계가 수행되기 전에 boolean draft 속성이 설정되어 있는지 확인해야합니다. 예 :

<h:commandButton value="Save draft" action="#{bean.saveDraft}"> 
    <f:param name="draft" value="true" /> 
</h:commandButton> 

@ManagedProperty("#{param.draft}") 
private boolean draft; 

또는 그것은보기 @ManagedProperty 작동하지 않습니다되는 콩을 범위의 경우 : 또 다른 방법은 버튼으로 누르면 EL에 확인하는 것입니다

public boolean isDraft() { 
    return "true".equals(FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("draft")); 
} 

매개 변수 이름의 존재를 판별합니다. 예를 들어, 다음 양식 및 버튼 ID로

<h:form id="form"> 
    <h:inputText value="#{bean.input}"> 
     <f:validateBean disabled="#{not empty param['form:draft']}" /> 
    </h:inputText> 
    <h:commandButton id="draft" value="Save draft" action="#{bean.saveDraft}" /> 
</h:form> 
+0

다시 감사드립니다. 매력처럼 작동합니다. – onigunn

+0

감사합니다. BalusC – ismail