ユーザーがチェックボックスをチェックまたはチェック解除したときに、のformBean
一部である属性を更新する必要があります。
属性の値は、デフォルトで、ページが読み込まれる前に に設定されます。
ユーザーがチェックを外すと、値を にしようとしています。firebug デバッガー
を使用して値が変更されたことを確認できますが、フォーム オブジェクトの値は常に送信されたままです。ArrayList
formBean
"on"
formBean
"off"
"off"
"on"
私のJSPコードは以下です。間違った方法で値を設定している場合はお知らせください。
Struts アプリケーション
JSP でのロジックの表示:
<input type="checkbox"
name="importedFiles[<c:out value='${stts.count - 1}'/>].importEnabled"
id="importedFiles[<c:out value='${stts.count - 1}'/>].importEnabled"
onClick="replicateCheckbothis, <c:out value='${stts.count - 1}'/> )"
<c:if test="${importedFiles.importEnabled != null}">checked</c:if> />
JS 経由の送信中にimportEnabled
、arrayList の一部であるimportedFiles
値を変更しようとしています。maintainDownloadForm
使用されているロジックを以下に示します。
function checkSelectedAndImport()
{
var anyClicked = "none";
for(var i = 0; i < <c:out value='${maintainDownloadForm.importedFileLength}' />; i++)
{
var element = document.getElementById("importedFiles[" + i + "].importEnabled");
if(element != null)
{
if(element.checked)
{
anyClicked = "true";
element.setAttribute('value', 'on'); alert('Selected--->'+element.getAttribute('value'));
}
else
{
element.setAttribute('value', 'off');
alert('Not Selected--->'+document.getElementById("importedFiles[" + i + "].importEnabled").value);
}
}
}
if(anyClicked != "none")
{
submitDGForm(getVMWareForm(),'saveImport');
}
else
{
alert("No rows have been selected for import. Please select data to import. To cancel the import, click on cancel.");
}
}
上記のロジックではelse
、ユーザーが期待どおりにチェックを外して印刷するとループに入ることができますが、ページがロードされる前と同じようにフォーム属性が常に残っているためalert
、フォーム属性で同じことが更新されません。importEnabled
"on"
コーディング ロジックに問題がある場合はお知らせください。また、同じ問題の修正も非常に役立ちます。