Java properties 에서 문자 치환하기.
Contents
저는 아래와 같은 properties 파일을 만들고,
UNKNOWNERROR=알 수 없는 오류입니다.(ERRORCODE)
아래와 같은 코드로 ERRORCODE를 대체해 왔습니다.
package com.idatabank.sso.exception;
import java.util.ResourceBundle;
public class SSOException extends Exception {
public SSOException() {
super();
}
public SSOException(String errorType) {
super(errorType);
userMessage = rb.getString(errorType);
if ( userMessage == null ) {
userMessage = rb.getString("UNKNOWNERROR").replaceAll("ERRORCODE", errorType);
}
}
/**
* 사용자 에러 메시지를 세팅한다.
* @param userMessage
*/
public void setUserMessage(String userMessage) {
this.userMessage = userMessage;
}
/**
* 사용자 에러 메시지를 반환한다.
* @return
*/
public String getUserMessage() {
return userMessage;
}
private String userMessage = null;
private static final ResourceBundle rb = ResourceBundle.getBundle("com.idatabank.sso.exception.Messages");
}
그런데, 오늘 문자열 치환의 새로운 방법을 찾았습니다.
http.method_not_implemented=Method {0} is not defined in RFC 2068 and is not supported by the Servlet API
String errMsg = rb.getString("http.method_not_implemented");
Object[] errArgs = new Object[1];
errArgs[0] = method;
errMsg = java.text.MessageFormat.format(errMsg, errArgs);
이 방법이 좀더 우아해 보입니다.