2013-03-27 2 views
1

아코디언 패널의 탭 안에 설명이있는 텍스트 영역이 있습니다. 설명을 수정하고 저장하려고합니다. 최대 문자가 1000자를 넘지 않도록 텍스트 영역의 유효성을 검사합니다. 유효성 검사 메시지를 표시하려면 <p:message>을 사용하고 있습니다. 실제 저장하기 전에 저장을 확인하는 확인 대화 상자가 표시됩니다. 사용자가 1000 개 이상의 문자를 입력하고 저장하려고하면유효성 검증 오류가있을 때 확인 대화 상자가 열리지 않도록하십시오

<p:messages showDetail="true" autoUpdate="true" /> 

<p:accordionPanel dynamic="true"> 
    <p:tab id="_0" title="description"> 
     <p:inputTextarea styleClass="max" id="editDesc1" widgetVar="txtBox" value="#{testBean.description}" 
      rows="6" cols="150" validatorMessage="#{msg.AddSystem_validationMsg5}" autoResize="false"> 
      <f:validateLength maximum="1000"></f:validateLength> 
     </p:inputTextarea> 

     <p:commandButton value="save" oncomplete="saveDialog.show()"/> 

     <p:confirmDialog message="#{msg.EditSystem_confirmMsg1}" width="200" 
      showEffect="explode" hideEffect="explode" 
      header="Confirm" severity="alert" widgetVar="saveDialog"> 
      <p:commandButton value="#{msg.EditSystem_confirmAnswer1}" action="#{testBean.saveEdit}" process="@this" /> 
      <p:commandButton value="#{msg.EditSystem_confirmAnswer2}" onclick="saveDialog.hide()" type="button" /> 

는 다음 확인 메시지가 짧은 시간 동안 표시 한 다음 확인 여부를 묻는 대화 상자는 확인 메시지가 사라지는 원인이 나타납니다. 유효성 검사 오류가있을 때 확인 대화 상자가 나타나지 않게하려면 어떻게합니까?

답변

5

당신은 검증이 실패하지 않은 경우 저장 버튼의 oncomplete에 확인해야합니다. PrimeFaces는 글로벌 args 객체를 JavaScript 범위에 넣습니다.이 객체는 다시 부울 validationFailed 속성을가집니다.

<p:commandButton value="save" oncomplete="if (args &amp;&amp; !args.validationFailed) saveDialog.show()"/> 

이렇게하면 확인 대화 상자는 유효성 검사가 실패하지 않은 경우에만 표시됩니다.

-1

나는 유효성을 검사 자바 스크립트를 사용할 수 있다고 생각 :

<script type="text/javascript"> 
function test(){ 
// validation here 
if(isValidated){saveDialog.show()} 
else alert('exceed ...'); 
} 
</script> 
<p:commandButton value="save" onclick="test()"/> 
+1

이것은 서버 측 유효성 검사의 목적과 권한을 완전히 상실합니다. 이 방법은 절대 권장되지 않습니다. – BalusC

+0

예, args.validationFailed를 잊어 버렸습니다. 감사합니다. –

관련 문제