我的表单在会话范围内运行。
我的表单中有两个复选框,默认情况下会选中它们。但是,当我取消选中复选框并提交表单时,复选框将恢复为已检查状态。
可能导致这种情况的原因是什么?任何暗示修复这一点将不胜感激。
的供参考: 的 如果我将表单范围从会话更改为请求,则复选框似乎也运行正常。
<div class="checkbox_item">
<label>
<input id="member" name="member" type="checkbox" checked="checked" value="Y" ></input>
Member
</label>
</div>
<div class="checkbox_item">
<label>
<input id="candidate" name="candidate" type="checkbox" checked="checked" value="Y" ></input>
Candidate
</label>
</div>
在将表单提交给servlet之前,我检查了下面的复选框的值,并且它总是显示“Y”。
alert("member: " + $("#member").val() + " candidate: " + $("#candidate").val());
修改
我正在使用Struts 1.
呈现表单的方法:
public ActionForward renderForm(ActionMapping actionMapping,
ActionForm form, HttpServletRequest req,
HttpServletResponse res) throws Exception {
MyForm myForm = (MyForm) form;
myForm.set("member", "Y");
myForm.set("candidate", "Y");
return actionMapping.findForward("success");
}
提交表单时调用的方法:
public ActionForward search(
ActionMapping actionMapping, ActionForm form,
HttpServletRequest req,
HttpServletResponse res) throws Exception {
MyForm myForm = (MyForm) form;
List<MyObject> list = service.search(myForm);
myForm.setMyList(list);
return actionMapping.findForward("success");
}
我的jsp表格:
<form name="myForm" action="myLink.do" method="post" onsubmit="return clickSearchButton()">
<label>
<div class="checkbox_item">
<label>
<html:checkbox name="myForm" styleId="member" property="member" value="Y"/>
Member
</label>
</div>
<div class="checkbox_item">
<label>
<html:checkbox name="myForm" styleId="candidate" property="candidate" value="Y"/>
Candidate
</label>
</div>
</label>
<input type="submit" title="Search" />
</form>
答案 0 :(得分:1)
这对你有用吗? 提交表单时,只有“on”复选框控件才能成功。 在您的后端,您只需要评估复选框的存在 http://www.w3.org/TR/html401/interact/forms.html
if(null != myForm.get("member") && myForm.get("member")){// check if checkbox was checked/unchecked
myForm.set("member","Y"); // use your business logic to set/unset this field accordingly
}