2

顧客のリストを表示する JSP があります (ArrayList searchResults)。それらのいずれかを選択して、Spring MVC コントローラーに送信できるようにしたいと考えています。ただし、選択したオブジェクトを渡すことはできず、customerId などのプロパティのみを渡すようです。オブジェクト全体を渡す必要があります。

Spring 3.x でこれを行う標準的な方法はありますか?

<c:forEach items="${searchResults}" var="searchResult">
    <tr>
        <td><c:out value="${searchResult.customerId}" /></td>
        <td><c:out value="${searchResult.firstName}" /></td>
        <td><c:out value="${searchResult.lastName}" /></td>
        <td>
            <form method="POST" ACTION="./customercare">
                <input type="SUBMIT" value="Select This Customer"/>
                <input type="hidden" name ="searchResult" value="${searchResult}"/>
            </form>
        </td>
    </tr>
</c:forEach>
4

3 に答える 3

4

プレーンの代わりにSpringのformtaglibを使用<form>して、Spring MVCコントローラーにポストバックすると、指定したモデルに値がバインドされます。

<form:form method="post" action="addContact.html">

<table>
<tr>
    <td><form:label path="firstname">First Name</form:label></td>
    <td><form:input path="firstname" /></td> 
</tr>

...

@RequestMapping(value = "/addContact", method = RequestMethod.POST)
public String addContact(@ModelAttribute("contact")
                        Contact contact, BindingResult result) {

この投稿を参照してください: http://viralpatel.net/blogs/spring-3-mvc-handling-forms/

于 2013-01-25T21:21:39.163 に答える
0

POST する行を区別するために、各タグとネストされたタグにidを与えることを検討することをお勧めします。

<c:forEach items="${searchResults}" var="searchResult">
    <tr> 
....
            <form:form id="${searchResults.key}-form" method="POST" ACTION="./customercare">
                <form:input id="${searchResults.key}-btn" type="SUBMIT" value="Select This Customer"/>
                <form:input id="${searchResults.key}-hidden" type="hidden" name ="${searchResults.key}" value="searchResult['${searchResults.key}']"/>
            </form:form>

    </tr>

バックエンド側では、@PatBurke の提案に従ってコントローラーを作成する必要があります。

于 2013-01-25T21:42:02.967 に答える
0

多くの非表示の入力がある顧客ごとに 1 つのフォームを持つことができます。その顧客が選択されると、そのフォームを投稿できます。その後、Spring はすべての非表示の入力を顧客オブジェクトにバインドできます。

(通常、ID のみを送信し、データベースからエンティティとして顧客情報をロードします。ただし、これを実行したくないのには十分な理由があるはずです)

于 2013-01-26T17:33:23.017 に答える