2014-06-13 115 views
0

情况: 当我们勾选此复选框时,会发送一个过帐请求,复选框值为false 并且我们在验证中将模型设置为true。JSTL复选框不起作用

问题
但问题是这个Model对象也是一个会话属性在jsp上没有反映这个变化。所以问题是obj.value在两种情况下都是错误的?

<div class="block"> 
<label class="medium">Attach authority:</label> 
<input type="checkbox" value="${Model.noticeDetailsModel.fullAuthority}" 
    <c:if test="${Model.noticeDetailsModel.fullAuthority}">checked="checked"</c:if> 
    id="fullAuthority" onchange="javascript: setNoticeDetails(this);"/> 
</div> 

//set up details 
function setNoticeDetails(obj) { 
    $.post("generateNotice.do", { 
     value : obj.value, 
     name : obj.id, 
     stage : "setNoticeDetails" 
    }); 
} 

情况2:当我们剔掉复选框,POST请求再次与复选框值设置为false,而不是真正的发送后(如我们设置的值模型中的对象分别是“模式”为真)第一个要求是发送

回答

1

正如我不能看到控制器代码,我认为Java方面,即接收POST请求的工作确定

但是:

你的功能setNoticeDetails发送一个Ajax请求,响应其中我被你的代码忽略,因为你还没有实现成功处理程序。有关更多详细信息,请参阅http://api.jquery.com/jquery.post/

所以因为它的一个Ajax请求,将HTML /网页没有重载 - 而应该通过JavaScript操作HTML - e.g如果你只是想改变复选框的值,这样做:

function setNoticeDetails(obj) { 
    $.post("generateNotice.do", { 
     value : obj.value, 
     name : obj.id, 
     stage : "setNoticeDetails", 
     success: function(data) { 
      if ($("#fullAuthority").val() === "true"){ 
       $("#fullAuthority").val("false"); 
      } else { 
       $("#fullAuthority").val("true"); 
      } 
     } 
     }); 
    }