validation으로 message 뿌릴때 한글이 깨집니다
- 작성자 :
- 김*임
- 작성일 :
- 2011-06-14 10:08:40
- 조회수 :
- 3,128
- 구분 :
- 실행환경
- 진행상태 :
- 완료
Q
-- **-servlet.xml ---
<bean id="messageSource"
class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basenames">
<list>
<value>classpath:messages.properties</value>
</list>
</property>
</bean>
<bean id="beanValidator" class="org.springmodules.validation.commons.DefaultBeanValidator">
<property name="validatorFactory" ref="validatorFactory"/>
</bean>
<bean id="validatorFactory" class="org.springmodules.validation.commons.DefaultValidatorFactory">
<property name="validationConfigLocations">
<list>
<value>/WEB-INF/config/validator-rules.xml</value>
<value>/WEB-INF/config/validator.xml</value>
</list>
</property>
</bean>
---- validation-rules.xml ---
<form-validation>
<global>
<validator name="required"
classname="org.springmodules.validation.commons.FieldChecks"
method="validateRequired"
methodParams="java.lang.Object,
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.springframework.validation.Errors"
msg="errors.required">
</validator>
</global>
</form-validation>
--- validatior.xml ----
<form-validation>
<formset>
<form name="user">
<field property="user_id" depends="required,korean">
<arg0 key="user.user_id" />
</field>
</form>
</formset>
</form-validation>
-- jsp --
<form:form commandName="user">
<table>
<tr>
<th>이름</th><td><form:input path="user_id" size="20"/><form:errors path="user_id" /></td>
</tr>
</form:form>
이렇게 해서 에러메세지를 뿌리게 했는데요...
에러메세지 파일을 읽긴 하는데 한글이 깨집니다.
**-servlet.xml 파일에 캐릭터셋은 UTF-8로 주었구요..
어떤식으로 해결해야 될지 몰라 문의 드립니다.
messages파일이나 기타 다른파일들의 설정도 전부 UTF-8 입니다.
<bean id="messageSource"
class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basenames">
<list>
<value>classpath:messages.properties</value>
</list>
</property>
</bean>
<bean id="beanValidator" class="org.springmodules.validation.commons.DefaultBeanValidator">
<property name="validatorFactory" ref="validatorFactory"/>
</bean>
<bean id="validatorFactory" class="org.springmodules.validation.commons.DefaultValidatorFactory">
<property name="validationConfigLocations">
<list>
<value>/WEB-INF/config/validator-rules.xml</value>
<value>/WEB-INF/config/validator.xml</value>
</list>
</property>
</bean>
---- validation-rules.xml ---
<form-validation>
<global>
<validator name="required"
classname="org.springmodules.validation.commons.FieldChecks"
method="validateRequired"
methodParams="java.lang.Object,
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.springframework.validation.Errors"
msg="errors.required">
</validator>
</global>
</form-validation>
--- validatior.xml ----
<form-validation>
<formset>
<form name="user">
<field property="user_id" depends="required,korean">
<arg0 key="user.user_id" />
</field>
</form>
</formset>
</form-validation>
-- jsp --
<form:form commandName="user">
<table>
<tr>
<th>이름</th><td><form:input path="user_id" size="20"/><form:errors path="user_id" /></td>
</tr>
</form:form>
이렇게 해서 에러메세지를 뿌리게 했는데요...
에러메세지 파일을 읽긴 하는데 한글이 깨집니다.
**-servlet.xml 파일에 캐릭터셋은 UTF-8로 주었구요..
어떤식으로 해결해야 될지 몰라 문의 드립니다.
messages파일이나 기타 다른파일들의 설정도 전부 UTF-8 입니다.
A
안녕하세요.. 김현임님..
우선.. messageSource 설정 상의 ".properties"는 제외시켜 주셔야 할 것 같습니다.
<bean id="messageSource"
class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basenames">
<list>
<value>classpath:messages</value>
</list>
</property>
</bean>
그리고 한글이 깨지는 이유는 메시지 파일이 UTF-8로 인코딩 되셨기 때문입니다.
Java의 ResourceBundle 방식의 경우는 ISO-8859_1로 인코딩 되어야 합니다.
한글의 경우는 다음과 같이 인코딩 형식으로 저장되어야 합니다.
\uac80\uc0c9 => 검색
일반적으로는 JDK에서 제공하는 native2ascii 프로그램을 통해 위와 같은 방식으로 변경을 주시면 됩니다.
전자정부 표준프레임워크의 개발환경에서는 "PropertiesEditor"를 통해 자동으로 처리하도록 되어 있는데..
메시지 파일 선택 후.. 오른쪽 마우스 .. Open With -> PropertiesEditor를 선택하시면 됩니다.
이 경우 한글을 자동으로 변환하여 저장하고.. 읽을 때에도 변환하여 표시하고 있습니다.
그럼.. 즐거운 하루되십시오.
감사합니다.
우선.. messageSource 설정 상의 ".properties"는 제외시켜 주셔야 할 것 같습니다.
<bean id="messageSource"
class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basenames">
<list>
<value>classpath:messages</value>
</list>
</property>
</bean>
그리고 한글이 깨지는 이유는 메시지 파일이 UTF-8로 인코딩 되셨기 때문입니다.
Java의 ResourceBundle 방식의 경우는 ISO-8859_1로 인코딩 되어야 합니다.
한글의 경우는 다음과 같이 인코딩 형식으로 저장되어야 합니다.
\uac80\uc0c9 => 검색
일반적으로는 JDK에서 제공하는 native2ascii 프로그램을 통해 위와 같은 방식으로 변경을 주시면 됩니다.
전자정부 표준프레임워크의 개발환경에서는 "PropertiesEditor"를 통해 자동으로 처리하도록 되어 있는데..
메시지 파일 선택 후.. 오른쪽 마우스 .. Open With -> PropertiesEditor를 선택하시면 됩니다.
이 경우 한글을 자동으로 변환하여 저장하고.. 읽을 때에도 변환하여 표시하고 있습니다.
그럼.. 즐거운 하루되십시오.
감사합니다.