validator 사용 추가 질문
- 작성자 :
- 박*성
- 작성일 :
- 2020-07-13 14:21:42
- 조회수 :
- 3,241
- 구분 :
- 개발환경
- 진행상태 :
- 완료
Q
전에 올린 질문에 답변해 주신 내용을 더하여 다시 문의드립니다.
------이전 질문내용--------------------------------------------------------------------------------------------------------------------------------------------------
eGovFramework v3.8 에서 example 프로젝트를 생성하여 사용하고 있습니다.
jsp에서 조건에 따라 다른 input 값을 받을 때 validator 사용방법에 관하여 문의 드립니다.
컨트롤러 메소드 매개변수로 SampleVO sampleVO를 사용하고,
jsp에서
...
<validator:javascript formName="sampleVO" staticJavascript="false" xhtml="true" cdata="false"/>
...
<form:form commandName="sampleVO" id="detailForm" name="detailForm">
...
<c:if test="${state == 1}">
<tr>
<td><label for="id"><spring:message code="info.id"/></label></td>
<td><form:input path="id" ><form:errors path="id"/></td>
</tr>
</c:if>
<c:if test="${state == 0}">
<tr>
<td><label for="name"><spring:message code="info.name"/></label></td>
<td><form:input path="name" ><form:errors path="name"/></td>
</tr>
</c:if>
...
위와 같은 형식으로 작성된 코드가 있다고 할때
validator.xml 에서
<form-validation>
<formset>
<form name="sampleVO">
<field property="id" depends="required">
<arg0 key="info.id" />
</field>
</form>
</formset>
</form-validation>
위와같이 설정 할 경우 state가 1일 경우에는 정상적으로 필수체크가 이루어 지지만 state가 0일 경우에는 Uncaught TypeError가 발생합니다.
조건에 따라 다른 input 값을 적용할 수 있는 validator 설정방법이나 사용방법이 있을 까요?
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
Uncaught TypeError 생략된 로그 --> Uncaught TypeError: Cannot read property 'type' of undefined
답변 주신 대로 name에 대한 변수를 찾지 못해서 발생하는 에러로 생각 됩니다. 문의드린 이슈는 위와 같이 컨트롤러에서 넘어오는 값의 조건에
따라 다른 input 값이 적용 되어야 할 때 validator 설정방법이나 사용 방법이 있는가에 대한 것 입니다.
검증이 동작하려면 컨트롤러 매개변수명(SampleVO sampleVO)과 , jsp에서 <validator:javascript formName="sampleVO"/>태그의 formName 속성, 그리고 validator.xml 의 <form name="sampleVO"> 속성이 일치해야 한다고 알고 있습니다.
그런데 조건에 따라 input 값이 달라지다 보니 valitator.xml 에서 <field property="id" depends="required">의 property에 값도 달라져야 하는데 이 경우 valitator.xml에서 사용할 수 있는 작성법이 있는지 궁금합니다.
( 컨트롤러와 jsp를 따로 분리하여 validator.xml의 <form name="sampleVO"> 속성값을 다르게 사용하는 방법밖에 없을까요?)
------이전 질문내용--------------------------------------------------------------------------------------------------------------------------------------------------
eGovFramework v3.8 에서 example 프로젝트를 생성하여 사용하고 있습니다.
jsp에서 조건에 따라 다른 input 값을 받을 때 validator 사용방법에 관하여 문의 드립니다.
컨트롤러 메소드 매개변수로 SampleVO sampleVO를 사용하고,
jsp에서
...
<validator:javascript formName="sampleVO" staticJavascript="false" xhtml="true" cdata="false"/>
...
<form:form commandName="sampleVO" id="detailForm" name="detailForm">
...
<c:if test="${state == 1}">
<tr>
<td><label for="id"><spring:message code="info.id"/></label></td>
<td><form:input path="id" ><form:errors path="id"/></td>
</tr>
</c:if>
<c:if test="${state == 0}">
<tr>
<td><label for="name"><spring:message code="info.name"/></label></td>
<td><form:input path="name" ><form:errors path="name"/></td>
</tr>
</c:if>
...
위와 같은 형식으로 작성된 코드가 있다고 할때
validator.xml 에서
<form-validation>
<formset>
<form name="sampleVO">
<field property="id" depends="required">
<arg0 key="info.id" />
</field>
</form>
</formset>
</form-validation>
위와같이 설정 할 경우 state가 1일 경우에는 정상적으로 필수체크가 이루어 지지만 state가 0일 경우에는 Uncaught TypeError가 발생합니다.
조건에 따라 다른 input 값을 적용할 수 있는 validator 설정방법이나 사용방법이 있을 까요?
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
Uncaught TypeError 생략된 로그 --> Uncaught TypeError: Cannot read property 'type' of undefined
답변 주신 대로 name에 대한 변수를 찾지 못해서 발생하는 에러로 생각 됩니다. 문의드린 이슈는 위와 같이 컨트롤러에서 넘어오는 값의 조건에
따라 다른 input 값이 적용 되어야 할 때 validator 설정방법이나 사용 방법이 있는가에 대한 것 입니다.
검증이 동작하려면 컨트롤러 매개변수명(SampleVO sampleVO)과 , jsp에서 <validator:javascript formName="sampleVO"/>태그의 formName 속성, 그리고 validator.xml 의 <form name="sampleVO"> 속성이 일치해야 한다고 알고 있습니다.
그런데 조건에 따라 input 값이 달라지다 보니 valitator.xml 에서 <field property="id" depends="required">의 property에 값도 달라져야 하는데 이 경우 valitator.xml에서 사용할 수 있는 작성법이 있는지 궁금합니다.
( 컨트롤러와 jsp를 따로 분리하여 validator.xml의 <form name="sampleVO"> 속성값을 다르게 사용하는 방법밖에 없을까요?)
A
안녕하세요.
표준프레임워크 센터입니다.
현재 질문 주신 내용만으로는
Uncaught TypeError: Cannot read property 'type' of undefined 가 validation 과 직접적인 영향이 있는지 명확하지 않습니다.
질문주신 요지를 다른 필드값에 따른 필수값 지정 가능 여부로 질문 갈음하자면
아래의 Conditionally required fields 부분을 참고하시면 될 것 같습니다.
http://www.lab4inf.fh-muenster.de/lab4inf/Struts/userGuide/dev_validator.html
required 뿐 아니라 조건적으로 필수값을 지정할 수 있는 requiredif, validwhen도 존재합니다.
감사합니다.
표준프레임워크 센터입니다.
현재 질문 주신 내용만으로는
Uncaught TypeError: Cannot read property 'type' of undefined 가 validation 과 직접적인 영향이 있는지 명확하지 않습니다.
질문주신 요지를 다른 필드값에 따른 필수값 지정 가능 여부로 질문 갈음하자면
아래의 Conditionally required fields 부분을 참고하시면 될 것 같습니다.
http://www.lab4inf.fh-muenster.de/lab4inf/Struts/userGuide/dev_validator.html
required 뿐 아니라 조건적으로 필수값을 지정할 수 있는 requiredif, validwhen도 존재합니다.
감사합니다.