プロパティファイルのキー値を次のように再利用できますか?
key1=hello
key2=#{key1} world!
ありがとう、
更新:以下は、キー値を再利用可能にするResourceBundleをオーバーライドするコードです。
public class Messages extends ResourceBundle {
public Messages() {
setParent(getBundle("resources.test", FacesContext.getCurrentInstance().getViewRoot().getLocale()));
}
@Override
public Enumeration<String> getKeys() {
return parent.getKeys();
}
@Override
protected Object handleGetObject(String key) {
try {
return replaceKey(parent, key, 3);
} catch (Exception e) { }
try { return parent.getObject(key);
} catch (MissingResourceException e) {
return key;
}
catch (Exception e) {
return key;
}
}
private Pattern Pattern = Pattern.compile("\\$\\{([\\w\\.\\-]+)\\}");
private String replaceKey(ResourceBundle bundle, String key, int iteration) {
String message = bundle.getString(key);
if (message != null) {
StringBuffer sb = new StringBuffer();
Matcher matcher = Pattern.matcher(message);
while (matcher.find() && iteration > 0) {
// the magic
matcher.appendReplacement(sb, replaceKey(bundle, matcher.group(1), iteration - 1));
}
matcher.appendTail(sb);
return sb.toString();
}
return null;
}
}
参照については、以下を参照してください