Struts Tip: LookupDispatchActionのボタンラベル

LookupDispatchAction では、getKeyMethodMapメソッドの中でボタンのラベルごとにmap.put(...); というラインを定義しなければならないのですが、struts-userメーリングリストの中で"新しいボタンを追加するたびにコードをいじるのは嫌だ"というコメントがありました。 その問題を解決する方法がMattさんにポストされてました
まず、LookupMethods.propertiesというファイルを作成し、次のようなラインを作ります。


button.add=add
button.cancel=cancel
button.copy=copy
button.edit=edit
button.delete=delete
button.save=save
button.search=search
そして、BaseActionクラスには次のようなメソッドがあります。

public Map getKeyMethodMap() {
Map map = new HashMap();

ResourceBundle methods = ResourceBundle.getBundle("org.appfuse.webapp.action.LookupMethods");

Enumeration keys = methods.getKeys();

while (keys.hasMoreElements()) {
String key = (String) keys.nextElement();
map.put(key, methods.getString(key));
}

return map;
}

これで、ボタンのラベルを足したい時に、わざわざコードを書き換えてリコンパイルする必要もなくなります。 少し、整理しやすくなりますね。 あまりボタンの種類がないときは、たいして変わりないとも思いますが…。