0

ユーザーを含むリストがあります。JSPで印刷しようとしていますが、spring:bind. 例外があります。私が使用しようとしている理由spring:bindは、@Formatting アノテーションを組み込むことです。

JSP のコード

<c:forEach items="${users}" var="user" varStatus="status">
   <spring:bind path="users[${status.index}].name">
      <c:out value="${status.value}" />
   </spring:bind>
</c:forEach>

コントローラ

ModelAndView modelAndView = new ModelAndView("go_some_JSP_page");
List<UserEntity> users = userManager.getAllObjects();
modelAndView.addObject("users", users);

ところで、UserEntity には name フィールドがあります。バインディングを削除して印刷しようとするとuser.name<c:out value="user.name" />値が印刷されます

テスト サンプル コードはhttps://github.com/hth/StatusInvoke.gitにあります。

Landing.jspの 35 行目を見てください。

展開に問題が発生した場合はお知らせください。

4

2 に答える 2

1

これを機能させる唯一の方法は、バインド先の Bean パスが基本コマンド Bean 内にある場合です。私の場合、ユーザー用のゲッターとセッターを持つ MyForm を使用しています。スプリング バインド タグは、ベース フォーム コマンド Bean の外では機能しないようです。

したがって、コントローラーのメソッドを に変更する必要があります。

@RequestMapping(method = RequestMethod.GET)
public ModelAndView loadForm() {
    ModelAndView modelAndView = new ModelAndView("landing");
    MyForm myForm = new MyForm();
    myForm.setUsers(populate());
    modelAndView.addObject("myForm", myForm);
    return modelAndView;
}

あなたのjspには次のものがあります。

<form:form commandName="myForm">
    <c:forEach var="user" items="${myForm.users}" varStatus="status">
        <tr>
            <td><spring:bind path="users[${status.index}].loginName">
                    <c:out value="${status.value}" />
                </spring:bind></td>
            <td><spring:bind path="users[${status.index}].balance">
                    <c:out value="${status.value}" />
                </spring:bind></td>
        </tr>
    </c:forEach>
</form:form>
于 2013-01-02T21:45:27.847 に答える
0

@NumberFormat アノテーションを呼び出す正しい答えは、spring:eval expressionタグを使用することです

<spring:eval expression="user.balance" />
于 2013-01-03T01:10:57.110 に答える