試験のためのnullパラメータです。プロパティファイルのためのMessageFormat
-
21-09-2019 - |
質問
引っ張り出すだけではなく、これとリソースバンドル、MessageFormatをしていた場合は、以下のような結果?
- 呼び出
getBundle("message.07", "test")
得"Group test"
- 呼び出
getBundle("message.07", null)
得"No group selected"
毎例からのインターネットは惑星、ファイルをディスクです。
まだ一つのパラメータ null
(または存在しない のリソースバンドルの性ファイルです。いることを期待してい特殊フォーマットのnullパラメータのようなもの {0,choice,null#No group selected|notnull#Group {0}}
.
の方法を使っていくのバンドルは:
public String getBundle(String key, Object... params) {
try {
String message = resourceBundle.getString(key);
if (params.length == 0) {
return message;
} else {
return MessageFormat.format(message, params);
}
} catch (Exception e) {
return "???";
}
}
また、この方法その他のバンドルのように、
getBundle("message.08", 1, 2)
=>"Page 1 of 2"
(パラメータの必要なしチェックnull
)getBundle("message.09")
=>"Open file"
(パラメータの必要なしチェックnull
)
何を書き込んでいますpropertiesファイル message.07
の結果を記述?
私の現在:
message.07=Group {0}
message.08=Page {0} of {1} # message with parameters where I always send them
message.09=Open file # message without parameters
解決
ご .properties
ファイル
message.07=Group {0}
message.08=Page {0} of {1}
message.09=Open file
message.null = No group selected
を変更する必要があるコードを明示的なチェック params
のための null
.ば null
その後いつものように resourceBundle.getString(NULL_MSG)
.場所 NULL_MSG
すること
private static final String NULL_MSG = "message.null";
そこで、オリジナルのメソッドを主に取り扱っている。
public String getBundle(String key, Object... params) {
String message = null;
try {
if (params == null) {
message = resourceBundle.getString(NULL_MSG);
} else {
message = MessageFormat.format(resourceBundle.getString(key), params);
}
} catch (Exception e) {
e.printStackTrace();
}
return message;
}
呼び出しに私の方法を以下のように,
getBundle("message.07", "test") // returning 'Group test'
getBundle("message.07", null) // returning 'No group selected'
getBundle("message.08", 1, 2) // returning 'Page 1 of 2'
getBundle("message.08", null) // returning 'No group selected'
getBundle("message.09", new Object[0]) // returning 'Open file'
getBundle("message.09", null) // returning 'No group selected'
今いるが問題なのでしょうか。
他のヒント
思わないことをお勧めしを変えようとしているパッケージの機能を持っていたとしても、getBundle方法で封止します。
単純なコード:
getBundle(param == null? "message.07.null": "message.07", param)
もしくは他の方法:
getBundleOrNull("message.07", param, "message.07.null")
ることは
public String getBundleOrNull(String key, value, nullKey) {
return getBundle(value == null? nullKey: key: value);
}
所属していません StackOverflow