0

私はこの質問の手順に従いましたが、まだ問題が発生しています。

私のコントローラーは次のようになります...

@RequestMapping(value = "listBooks.htm")
public String goToNextPage(Model model, HttpServletRequest request){

    HashMap<String,Map<String,String>> hashMapOfData = new HashMap<String,Map<String,String>>();

    Map<String,String> m = new LinkedHashMap<String,String>();
    m.put("1", "foo");
    m.put("2", "bar");
    hashMapOfData.put("m", m);
    model.addAttribute("dropdownData", hashMapOfData);
.....
}

私のjspファイル...

<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<form:select path="dropdownData"><br />
 <form:option label="Select..." value=""/>
 <form:options items="${dropdownData}" itemLabel="label" itemValue="value"/>
</form:select>

エラーが発生します...

org.springframework.beans.NotReadablePropertyException:Beanクラスの無効なプロパティ'value' [java.lang.String]:Beanプロパティ'value'が読み取れないか、無効なgetterメソッドがあります:getterの戻り型がパラメータ型と一致していますかセッターの

しかし、jspファイルを...に変更すると、itemLabel="label" itemValue="value"

<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<form:select path="dropdownData"><br />
 <form:option label="Select..." value=""/>
 <form:options items="${dropdownData}"/>
</form:select>

ページは読み込まれますが、ドロップダウンボックスの選択は

  • 選択する...
  • {1 = foo、2 = bar}

誰かが私を助けることができますか?Spring MVCに関しては、私はかなりの初心者なので、非常に詳細な回答をいただければ幸いです。

4

1 に答える 1

3

エラーはそれをすべて説明します

org.springframework.beans.NotReadablePropertyException: Invalid property 'value' of bean class [java.lang.String]: Bean property 'value' is not readable or has an invalid getter method: Does the return type of the getter match the parameter type of the setter

Springは、java.lang.String内に値のゲッターを見つけようとしていますが、これは存在しません。

( LabelValueModelList<LabelValueModel>は自分で作成したもので、labelとvalueのプロパティがあります。

最終的なjspは次のようになります。

<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<form:select path="dropdownData"><br />
 <form:option label="Select..." value=""/>
 <form:options items="${dropdownData}" itemLabel="label" itemValue="value"/>
</form:select>

LabelValueModelは、特定のテクノロジーへのバインドを回避するための単純なPOJOになります。

public class LabelValueModel
{
  private String label;
  private String value;

  ..public getters..
  ..might consider private setters and only allowing setting through constructor..
}
于 2013-01-15T21:03:39.317 に答える