1

HDIV と Spring MVC を統合しました。これで、コントラクト、タスクオーダー、サブタスクの 3 つのドロップダウン リストがあるフォームができました。契約の変更を選択すると、ajax を介して taskorder ドロップダウン リストの内容が更新され、タスク順序の変更を選択すると、ajax を介してドロップダウン リストのサブタスクの内容が更新されます。フォームは次のようになります。

 <c:url var="url" value="/admin/user/newstafftask" > 
 <c:param name="_MODIFY_HDIV_STATE_" value="${taskOrder.id}" />
</c:url>
<form:form action="${url}" commandName="newRequestStaffTasks">
    <form:hidden path="subId"  />
       <table >
            <tr>     
                <td> <label>Contract </label></td>
                <td>
                    <form:select path="newRequestStaffContract.id">
                      <option></option>
                      <form:options items="${contractList}" itemValue="id" itemLabel="contract.contractNbr" /> 
                    </form:select>
                </td>
        </tr>
        <tr>     
                <td> <label>Task Order </label></td>
                <td>
                    <form:select path="taskOrder.id">
                    </form:select>
                </td>
        </tr>
         <tr>     
                <td>  <label>SubTask Code </label></td>
                <td>
                    <form:select path="subtask.subTaskId">
                       <option></option>
                    </form:select>
                </td>
        </tr>
     </table>
</form:form>

フォームを送信しようとすると"INVALID_PARAMETER_NAME"、taskOrder.id に関するエラー メッセージが表示されました。問題は、クライアント側で 2 つのドロップダウン リストの値が更新されたことだと理解しています。_MODIFY_HDIV_STATE_ を試しましたが、このケースでは機能しませんでした。そのため、今どのように対処すればよいかわかりません。助けてください。ありがとう。

更新 1

HDIV 検証から Ajax リクエストをすでに除外しています。以下は、コントラクト選択の変更時に taskOrder リストを更新するコード スニペットです。

    $(".modal-body").on("change", "#newRequestStaffContract\\.id", function()  {
            getTaskOrderByContract($(this));
        });
        function getTaskOrderByContract(o) {
            contractId  = o.val();
            if (contractId)  {
                $.get("../../ajax/getTaskOrderByContract",  {
                    contractId : contractId
                }
                , function(data)  {
                    var options = '<option value=""></option>';
                    for (var i = 0; i < data.length; i++) {
                        options += '<option value="' + data[i].id + '">' +data[i].taskNum+ '</option>';
                    }
                    $('#taskOrder\\.id').html(options);
                });
            };
        };  
4

0 に答える 0