當頁面加載時,它填充表格。JSP - AJAX和控制器獲取對象,但不更新模型Attriibute
@RequestMapping(value = { "/access" }, method = RequestMethod.GET)
public String access(ModelMap model) {
List<UserDTO> users = userService.findAllUsers();
model.addAttribute("users", users);
UserDTO user = new UserDTO();
model.addAttribute("user", user);
return "access";
}
當用戶單擊一行上的編輯時,ajax將被調用。
function getDetails(id) {
$.ajax({
type : "get",
data : {id: id},
url : "get-details",
cache : false,
success : function(response) {
// code here
},
});
}
在控制器上,它將獲得提供id的UserDTO。
@RequestMapping(value = { "/get-details" }, method = RequestMethod.GET)
@ResponseBody
public String getDetails(@RequestParam("id") String id, ModelMap model) {
UserDTO user = userService.findById(id);
model.addAttribute("user", user);
return access; //'access' is the current page
}
在我的jsp我有...
<form:form method="POST" modelAttribute="user" class="form-horizontal">
我的問題是「用戶」的屬性保持爲空,而不是更新。 請注意,在調用調用controller的ajax之後,userService.findById會有結果。 我錯過了什麼?
謝謝。
UPDATE
我想我真的需要使用Ajax調用後的反應在我的jsp更新的ModelAttribute = 「用戶」。 因爲我使用的「用戶」屬性並將其綁定到字段和錯誤
<form:form method="POST" modelAttribute="user" class="form-horizontal">
<div class="modal-content">
<div class="modal-body">
<!-- Default panel contents -->
<form:input type="hidden" path="id" id="id" />
<div class="row">
<div class="form-group col-md-14">
<label class="col-md-3 control-label" for="firstName">First
Name</label>
<div class="col-md-7">
<form:input type="text" path="firstName" id="firstName"
class="form-control input-sm" />
<div class="has-error">
<form:errors path="firstName" class="help-inline" />
</div>
</div>
</div>
</div>
</div>
</div>
</form:form>
如果我將直接設置輸入字段,我有一個錯誤,如果形式與錯誤提交(例如空字段)
重度:Servlet.service()進行的servlet [調度]在上下文中與路徑[/ SSSBackEnd]拋出異常[java.lang.IllegalStateException:既不BindingResult也不對豆名「用戶」可作爲請求純目標對象屬性]與根本原因 java.lang.IllegalStateException:既沒有BindingResult也沒有用於bean名稱的普通目標對象'us er'作爲請求屬性 在org.springframework.web.servlet.support.BindStatus。(BindStatus.java:144) at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getBindStatus(AbstractDataBoundFormElementTag.java:168 ) 在org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getPropertyPath(AbstractDataBoundFormElementTag.java:188) 在org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getName(AbstractDataBoundFormElementTag.java:154) 在org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.writeDefaultAttributes(AbstractDataBoundFormElementTag.java:117) 在org.springframework.web.servlet.tags.form.AbstractHtmlElementTag.writeDefaultAttributes(AbstractHtmlElementTag.java:422)
您的要求mappging處理Ajax調用返回一個字符串,什麼意味着它是一個觀點,什麼手段春天,使用您的視圖解析器配置,會轉化爲HTML代碼。當使用ajax時,您應該使用@ResponseBody並返回一個json對象,使用javascript動態更新前端。 – alfcope
謝謝!有想法。但是當我得到一個json對象時,我如何使用它來更新modelAttribute =「user」? 請注意,它是另一個模態的jsp。 – dens
爲了進一步解釋,例如我有A.jsp,它具有ajax調用和json對象的響應。我需要在我的B.jsp這是一個模式,這將是我從ajax調用得到響應後顯示。 成功:功能(響應){// 響應現在是JSON對象 //我將顯示模態, $( '#myModal')模態( '顯示');。 //但這模態內,我有 <形式:形式方法=「POST」的ModelAttribute =「用戶」類=「形橫」> 我想用我得到 – dens