以下のように作成し、CustomerMessageSource
listAllAltLabels の結果をビューに配置することになりました。次に、それを反復する単純なケースでした。
public class CustomMessageSource extends ReloadableResourceBundleMessageSource {
public Map<String, String> listAllAltLabels(String basename, Locale locale) {
Map<String, String> altLabels = new HashMap<String, String>();
PropertiesHolder propertiesHolder = getMergedProperties(locale);
Properties properties = propertiesHolder.getProperties();
for(Object key : properties.keySet()){
if(((String)key).startsWith("alt.")) {
altLabels.put((String)key, (String)properties.get(key));
}
}
return altLabels;
}
}
私はSpring Webflowを使用します(ほとんどのコントローラーを非表示にします)が、基本的にコントローラー/アクションのどこかでページをレンダリングし、listAllAltLabelsを呼び出して結果を「altLabelMessages」に割り当て、モデル/ビューに配置します。
次に、ビュー(jsp)で
<c:forEach items="${altLabelMessages}" var="message">
<form:option value="${message.key}" label="${message.value}"/>
</c:forEach>