試験のためのnullパラメータです。プロパティファイルのためのMessageFormat

StackOverflow https://stackoverflow.com/questions/2085584

質問

引っ張り出すだけではなく、これとリソースバンドル、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);
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top