-1

アイテムの長いリストを表示するテーブルがあります。フィールドを編集し、フォームを送信して更新する方法を知りたいです。

 <form name="edit" method="POST" action="edit">
    <table border="4">
        <tbody>
            <c:forEach items="${basket.items}" var="item">
                <tr>
                    <td>
                        <input name="item.id" value="${item.id}"/>  
                    </td>
                    <td>
                        <input label="Price" value="${item.product.price}"/>
                        <br/>
                    </td>
                </tr>
            </c:forEach>
        </tbody>
    </table> 
    this is a new one
   <input id="edit" type="submit" name="edit" value="Edit"/>
</form>
4

2 に答える 2

2

Struts タグと OGNL の代わりに JSTL と EL を使用して Struts2 を使用しています...フレームワークの仕組みのほとんどを削除せざるを得ない特定の理由はありますか?

つまり、入力は有効ではなく (タイプが指定されていません)、HTML の「これは新しいものです」という文は、既存のエントリを編集する代わりに、新しい行を挿入する意思があることを示しているようです。あなたの説明とコードは2つの異なることを要求しているようです...新しいものを挿入するには、「編集」ではなく「追加」と呼ばれるアクション(または別のアクション)の別のメソッドを呼び出し、1つの要素を送信してコレクションに追加します。ここでAJAXを使用する必要はありません...

代わりに、質問は実際には次のとおりです。

フィールドを編集し、フォームを送信して更新するにはどうすればよいですか?

これが方法です:

<s:form method="POST" action="edit">
    <table border="4">
        <tbody>
            <s:iterator value="basket.items" var="item" status="ctr">
                <tr>
                    <td>
                        <s:textfield name="item[%{#ctr.index}].id" />
                    </td>
                    <td>
                        <s:textfield name="item[%{#ctr.index}].product.price" />
                    </td>
                </tr>
            </s:iterator>
        </tbody>
    </table> 
    <s:submit value="Edit"/>
</form>
于 2013-10-28T09:00:03.470 に答える
1

jquery を使用して AJAX 呼び出しを行い、新しいものを更新することをお勧めします。そして、成功ハンドラーで、新しい行を既存のテーブルに追加できます。それを行う前に、JQUERY を使いやすくするためにテーブルに適切な ID を与える必要があります。

var newLine = document.createElement("tr");
var cellName = document.createElement("td");
$(cellName).text("itemId");
$(newLine).append(cellName);
// similarly create other td's
$("#modelTable").append(newLine);// replace modelTable by the id of your table 
于 2013-10-28T05:03:26.983 に答える