2011-11-08 1 views
3

JSF 2 어플리케이션을 작성 중이며 faces-page 대신 bean에서 양식 유효성 검증을 사용하려고합니다. 또한 .properties 파일을 사용하여 메시지를 저장하고 싶습니다.bean 유효성 검증을위한 사용자 정의 유효성 검증 메시지

나는 this question을 보았지만 올바르게 등록 정보 파일을 가지고 있다고 생각하지 않습니다.

의 난 'DEV'라는 패키지의 사용자라는 빈 있다고 가정 해 봅시다 : 내가 사용 나는 또한 WEB-INF/클래스에서 파일 'ValidationMessages.properties'를 만든

@ManagedBean 
@SessionScoped 
public class User implements Serializable { 

    @Pattern(pattern="[email protected]+\\.[a-z]+", message="{dev.User.emailAddress}") 
    private String emailAddress; 

    // getter/setter 
} 

(

dev.User.emailAddress=Custom invalid email message 

그리고 내보기 (user.xhtml)는 다음과 같습니다 : 넷빈즈 7.0.1)을 ValidationMessages.properties에서

내가이 키/값 라인을 가지고 파일

내가 잘못된 이메일 주소를 입력하고 버튼을 누르면
<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:h="http://java.sun.com/jsf/html"> 
<h:head> 
    <title>User registration</title> 
</h:head> 
<h:body> 
    <h:form> 
     <h:inputText id="emailAddress" value="#{user.emailAddress}" required="true" /> 
     <h:message for="emailAddress" /> 
     <h:commandButton value="Ok" action="null" /> 
    </h:form> 
</h:body> 

, 웹 페이지에서 확인 메시지를 읽습니다

{dev.User.emailAddress} 

대신

Custom invalid email message 

문제가 될 수 있을까 web.xml에 등록 정보 파일을 등록하지 않았습니까?

Bean에서 required = "true"를 @NotNull로 전환해야합니다.

<context-param> 
    <param-name>javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL</param-name> 
    <param-value>true</param-value> 
</context-param> 

이 같은 BalusC's blog 설명 :이 삽입보다 내가해야 할 일이 있나요?

미리 감사드립니다.

/데니스

답변

2

.properties 파일을 resources 폴더에 넣었습니다. 파일을 아무 곳에 나 등록 할 필요가 없었습니다. 기록을 위해 : Netbeans 7.0.1 및 Maven을 사용하고 있습니다.

도움을 주셔서 감사합니다. BalusC!

+0

이상합니다. 어떤 bean 검증 구현 및/또는 어떤 servlet 컨테이너를 사용하고 있습니까? – BalusC

+0

Glassfish 3.1 (Netbeans와 함께 제공)을 사용하고 있습니다. 빈 검증 구현이 무엇을 의미하는지 확신 할 수 없습니까? –

3

는 또한 이해

(I 넷빈즈 7.0.1를 사용하고 있습니다) WEB-INF/클래스에서 파일 'ValidationMessages.properties'를 만들었습니다 프로젝트의 /WEB-INF/classes 폴더에 직접 넣었습니까? 이것은 IDE가 WAR를 빌드/전개하도록한다면 무시되거나 무시 될 것입니다 (적어도 이것은 Eclipse에 해당됩니다). 파일을 프로젝트의 Java 소스 폴더의 루트에 직접 넣어야합니다. 프로젝트를 WAR 파일로 내 보낸 다음 일부 ZIP 도구를 사용하여 압축을 풀면 실제로 그 파일이 /WEB-INF/classes에 있는지 확인하실 수 있습니다.

+0

어색한 것 같아요 :) 좋아, 내가 자바 루트에 .properties 파일을 배치하고 컴파일하고 EAR 파일을 보았을 때 WEB-INF로 끝납니다. 내 문제는 여전히에서 값을 작성하는 대신에 남아 있습니다.속성 파일을 열면 키가 인쇄됩니다. 나는. '사용자 정의 할 수없는 이메일 메시지'대신 {dev.User.emailAddress}를 인쇄합니다. 마치 문자열이 아닌 값을 출력하고 싶다는 것을 이해하지 못하는 것 같습니다. 아이디어? –