1

私は仮想アイテムを購入するためにマーケットプレイスで作業しており、各アイテムの横にある[購入]ボタンを使用して、各アイテムの詳細を行に表示することを計画しています。これが私が持っているものです:

<s:form method="post">
    <s:hidden name="shownType"/>
    <table>
        <tr>
            <td>Name</td>
            <td>Image</td>
            <td>Type</td>
            <td>Price</td>
            <td>Buy</td>
        </tr>
        <s:iterator value="items" var="item">
            <tr>
                <td><s:property value="name" /></td>
                <td><s:property value="image" /></td>
                <td><s:property value="type" /></td>
                <td align="center"><s:property value="price" /></td>
                <td><s:submit value="Buy"
                onclick="coinAlert()" action="Buy"
                type="button" theme="simple">
                </s:submit></td>
            </tr>
        </s:iterator>
    </table>
</s:form>

理論的には、特定のItemオブジェクト(名前、画像など)をBuyアクション(具体的にはbuyedItemという名前のItem)に渡します。問題は、クリックしたボタンの横にある特定のアイテムを参照する方法がわからないことです。私はもう試した

<s:hidden name="boughtItem.name" value="%{#item.name}"/>

ただし、buyedItemの名前は、リスト内のすべてのアイテムの名前にコンマで区切って設定されます。イテレータを使用してbuyedItemオブジェクト全体を一度に設定しようとしても失敗しました。

これに関する洞察をいただければ幸いです。

4

1 に答える 1

1

ボタンを使用する代わりにsubmit、シンプルなボタンを使用し、JavaScriptを使用してフォームを送信します

<s:form method="post" action="Buy" name="myForm">
    <s:hidden name="name" id='name_to_submit'/>
    <s:hidden name="image" id='image_to_submit'/>
    <s:hidden name="type" id='type_to_submit'/>
    <s:hidden name="price" id='price_to_submit'/>
    <table>
        <tr>
            <td>Name</td>
            <td>Image</td>
            <td>Type</td>
            <td>Price</td>
            <td>Buy</td>
        </tr>
        <s:iterator value="items" var="item">
            <tr id="<s:property value="name" />">
                <td><s:property value="name" /></td>
                <td class='image_td'><s:property value="image" /></td>
                <td class='type_td'><s:property value="type" /></td>
                <td class='price_td' align="center"><s:property value="price" /></td>
                <td><input type="button" value="Buy"
                onclick="submitForm('<s:property value="name" />')">
                </td>
            </tr>
        </s:iterator>
    </table>
</s:form>

JavaScript

function submitForm(name){
   //All this would be very easy if you were using jQuery
   var nameElem = document.getElementById(name);
   //get values for selected row
   var imageVal = nameElem.getElementsByClassName("image_td")[0].innerHTML;
   var priceVal = nameElem.getElementsByClassName("price_td")[0].innerHTML;
   var typeVal = nameElem.getElementsByClassName("type_td")[0].innerHTML;
    //set the values to submit
   document.getElementById("name_to_submit").value = name;
   document.getElementById("image_to_submit").value = imageVal;
   document.getElementById("price_to_submit").value = priceVal;
   document.getElementById("type_to_submit").value = typeVal;

   document.myForm.submit(); //finally submit the form
}

IDとしてではなく、いくつかの識別子プロパティを使用することをお勧めしますname

于 2012-10-23T07:16:00.547 に答える