3

古い MVC アプリケーションがあります。

次のようなメソッドを持つコントローラーがあります。

@RequestMapping(method=RequestMethod.GET)
public ModelAndView handleGet(@RequestParam(value="userId") String userId){
    ModelMap model = new ModelMap();
    List<Long> relatedIds = getListOfIds(userId)
    RelatedIdFormHolder();
    formHolder.setRelatedIds(relatedIds);
    model.put("relatedIdFormHolder", formHolder);
    return new ModelAndView("relatedIds.jsp", model);
}

次のようなフォームの .jsp があります。

<form:form method="post" commandName="relatedIdFormHolder" id="relatedIdFormHolder" onsubmit="submit_form()">
    <form:select path="selectedId">
        <form:options items="relatedIds"></form:options>
    </form:select>
</form:form>

そして、私は次のようなPOJOを持っています:

public class RelatedIdFormHolder {

    public List<Long> getRelatedIds() {
        return relatedIds;
    }
    public void setRelatedIds(List<Long> relatedIds) {
        this.relatedIds = relatedIds;
    }
    public String getSelectedId() {
        return selectedId;
    }
    public void setSelectedId(String selectedId) {
        this.selectedId = selectedId;
    }
    List<Long> relatedIds;
    String selectedId; 
}

正しい URL にアクセスし、正しいコントローラーにマップされ、次に正しい .jsp にマップされますが、レンダリング中に JSP が次のようなエラーをスローします。

ERROR: error500 - javax.servlet.ServletException: javax.servlet.jsp.JspException: Type [java.lang.String] is not valid for option items

relatedIds と selectedID の両方を文字列とロングの両方としてビューから前後に渡してみましたが、同じ問題が発生します。

これは簡単なはずですが、何が欠けていますか?

4

1 に答える 1

4

フォームは次のようになるはずだと思います

<form:option items="${formHandler.relatedIds}"></form:option>

が必要となりますのでご注意ください${}

于 2015-08-21T13:54:03.587 に答える