0


        Spring-MVC 3.xx と jsp で動作する単純なコンボボックス (form:select で作成) を取得しようとして、何の進歩も見られずに、私は数日間サークルに参加してきました。非推奨になった「SimpleFormController」を拡張して実装された例がいくつかありますが、Spring 3.0.x アノテーションを使用した簡潔なサンプルは見つかりませんでした。また、Spring のリファレンス ドキュメントを既に調べましたが、コンボ ボックス コンポーネントを実行させるコントローラーとビュー (jsp) の両方のスニペットを取得できませんでした。
        これまでのところ、私が失敗したのは次のようなものです:(どんなコメントでも本当に感謝しています)

コントローラ クラス (例: MyController.java)

@Controller
public class MyController {
    @RequestMapping(value = "/", method = RequestMethod.GET)
    public String showHomePage(ModelMap model) {

        Map<String,String> country = new LinkedHashMap<String,String>();
        country.put("US", "United Stated");
        country.put("CHINA", "China");
        country.put("SG", "Singapore");
        country.put("MY", "Malaysia");
        model.put("countryList", country);
        return "home";
    }
}

home.jsp

<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%><br>
<html>
<body>
<form:form method="POST" commandName="country">
    <form:select path="country">
        <form:options items="${countryList}" />
    </form:select>
</form:form>
</body>


4

2 に答える 2

0

マヌエルの説明のおかげで、私は最終的に機能的で満足のいく解決策を思いつきました. ここでは、それを機能させるメイン コンポーネントにコピーします。

CountryBean クラス (例: CountryBean.java)

@Component
public class CountryBean {
    private String value;
    private String description;

public CountryBean(){
}
public CountryBean(String value, String description){
    this.value=value;
    this.description=description;
}

public String getValue() {
    return value;
}
public void setValue(String value) {
    this.value = value;
}
public String getDescription() {
    return description;
}
public void setDescription(String description) {
    this.description = description;
}
}

CountryFormBean クラス (例: CountryFormBean.java)

public class CountryFormBean {

private CountryBean countryBean;

public setCountryBean (CountryBean countryBean){
    this.countryBean=countryBean;
}

public CountryBean getCountryBean(){
    return countryBean
}    

コントローラ クラス (例: MyController.java)

@Controller
public class AttendanceController {
private List<CountryBean> countryBeanList;
public List<CountryBean> getCountryBeanList() {
    return countryBeanList;
}
@Autowired
public void setCountryBeanList(List<CountryBean>  countryBeanList) {
    this.countryBeanList = countryBeanList;
}
@RequestMapping(value = "/", method = RequestMethod.GET)
public String showHomePage(@ModelAttribute("countryFormBean") CountryFormBean countryFormBean, BindingResult result, ModelMap model) {


    countryBeanList.add(new CountryBean("US", "United Stated"));
    countryBeanList.add(new CountryBean("CHINA", "China"));
    countryBeanList.add(new CountryBean("SG", "Singapore"));
    countryBeanList.add(new CountryBean("MY", "Malaysia"));

    model.addAttribute("countryBeanList", countryBeanList);
    return "home";
}
}

home.jsp

<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<html>
<body>
<form:form method="POST" commandName="countryFormBean">
 <form:select path="countryBean"  items="${countryBeanList}" itemValue="value" itemLabel="description"/>
</form:form>
</body>
</html>
于 2013-02-06T14:45:42.893 に答える
0

過去にこれを使用した方法は、値と説明の 2 つのプロパティを持つ OptionValue という名前の Bean を作成することでした。OptionValue のリストをモデルに追加します。フォーム オプション タグは、値と説明を検索するプロパティを認識する必要があります。以下にサンプルを追加しました。

@Controller
public class MyController {
    @RequestMapping(value = "/", method = RequestMethod.GET)
    public String showHomePage(ModelMap model) {

        List<OptionValue> country = new ArrayList<OptionValue>();
        country.add(new OptionValue("US", "United Stated"));
        country.add(new OptionValue("CHINA", "China"));
        country.add(new OptionValue("SG", "Singapore"));
        country.add(new OptionValue("MY", "Malaysia"));
        model.put("countryList", country);
        return "home";
    }
}

あなたのjspで。

<form:options items="${countryList}" itemValue="value" itemLabel="description"/>
于 2013-02-05T19:10:31.263 に答える