2014-06-13 146 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"); 
      } 
     } 
     }); 
    }