Spring フォーム taglib ( http://www.springframework.org/tags/form )を利用する Spring プロジェクトに取り組んでいます。
複数の選択ボックスを使用して、いくつかのオプション (国、工場など) を示しています。
リスト全体を選択に渡すと、すべて問題ありません。選択リストの最初のオプションがデフォルトで選択されます。ただし、ユーザーが特定の国の出身である場合、リストはフィルター処理され、その国のみが表示されます。この場合、最初の要素はデフォルトで選択されていません。
JSP ページ:
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<form:select path="countryValues" multiple="true" size="9" style="width:192px;" cssErrorClass="field-error">
<form:options items="${command.countries}" itemValue="countryCode" itemLabel="correctDisplayString"/>
</form:select>
Command.java
public List<CountryMaster> getCountries() {
return countries;
}
public void setCountries(List<CountryMaster> countries) {
this.countries = countries;
}
コントローラー.java
@RequestMapping(value = "/overview", method = RequestMethod.GET)
public String overview(HttpServletRequest request, Model model) {
Attrs attrs = getAttrs(request);
UserLocale.initUser(getUser(request));
User user = UserLocale.getUser();
List<FactoryMaster> factoryList = getFactoryList(attrs);
List<CountryMaster> countryList = getCountryList(attrs);
Command command = initCommand(attrs);
model.addAttribute(command);
if(user.hasRole(User.NORMAL)&& user.getCountryCode() != null){
if(countries == null){
countries= getDaoBuilder().getDaoCountry().countryMap();
}
String isoCode = countries.get(user
.getCountryCode());
List<CountryMaster> buffer = new ArrayList<CountryMaster>();
for(CountryMaster i : countryList){
if(isoCode.equalsIgnoreCase(i.getIsoCode())){
buffer.add(i);
}
}
System.out.println("List size: "+buffer.size());
command.setCountries(buffer);
}
else{
command.getCountries().addAll(getCountryList(attrs));
}
command.getModels().addAll(getModelList(attrs));
command.setBrands(getBrandList(attrs));
return "/reporting/overview";
}
private List<CountryMaster> getCountryList(Attrs attrs) {
List<CountryMaster> result = new ArrayList<CountryMaster>();
CountryMaster ct = new CountryMaster(CountryMaster.ISO_COUNTRY_JOKER, 00);
ct.setDescription("ALL");
result.add(ct);
result.addAll(attrs.countryList);
return result;
}
HTML ページでは、他のリストで最初の要素に属性があることがわかりますselected="selected"
。リストを操作するときになぜこれが当てはまらないのか、誰にも分かりますか? または、この選択された属性の割り当てに責任があることを誰かが知っていますか? (これはjavascript、java属性ですか...?)
前もって感謝します!