我集成了 HDIV 和 Spring MVC。现在我有一个表单,上面有三个下拉列表合同、任务订单和子任务。合约的选择变更会通过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 的错误消息。我知道问题是客户端更新了两个下拉列表的值。我尝试了_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);
});
};
};