Làm việc với Form trong Spring??

Dapruoi

New Member
5/6/16
18
1
3
28
vấn đề là thế này : mình làm chức năng cập nhật thông tin hàng hóa

người dùng click vào chức năng cập nhật >> controller setupformcapnhat() , tại đây thì mình sử dụng ModelMap và addattribute("hanghoa", objhanghoa) >> trên views thì mình dùng thuộc tính commandName và path để binding dữ liệu từ form vào objhanghoa >> ấn nút submit để đưa objhanghoa về controller

vấn đề là chỉ những trường mình path ở trên views thì nó mới có giá trị trong objhanghoa còn lại thì nó bằng null hết , vd như mã hàng hóa mình phải sử dụng input hidden để binding chứ không là nó bằng null

câu hỏi đặt ra là lỡ cái objhanghoa kia có cả trăm thuộc tính mà trên form mình chỉ cho update vài thuộc tính thôi thì những thuộc tính không xuất hiện trên form sẽ bằng null hết , và cách thủ công mình hay làm là truyền id của bảng đó về sau đó get dữ liệu cũ rồi dựa trên những thuộc tính trên form để set dữ liệu mới vào rồi mới cập nhật , ai có cách nào hay hơn không ???

Code:
views
<form:form method="POST" commandName="userInfomation"  >
          
                <input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/>
                <form:input path="userId" type="hidden" />
                <div class="form-group">
                    <label>userName</label>
                    <form:input path="userName" id="thanhphan"   class="form-control" placeholder="Enter ..."/>
                </div>
                <div class="form-group">
                    <label>Email </label>
                    <form:input  path="email" id="name" type="text" class="form-control" placeholder="Enter ..." />
                </div>
        <button class="btn btn-primary" type="submit"  >Cập nhật</button>
</form:form>
Code:
 controller
// setup userinfo cho form
@RequestMapping(value = {"/Shop/Update"}, method = RequestMethod.GET)
public String setupUpdate(ModelMap mm,HttpSession session){
User userInfo = (User) session.getAttribute("user");
mm.addAttribute("userInfomation", userInfo);

}

// xử lý chức năng update , nhưng đối tượng nhận về sẽ bị null tại các giá trị mà mình ko path dữ liệu trên form
@RequestMapping(value = {"/Shop/Update"}, method = RequestMethod.POST)
public String Update(ModelMap mm,HttpSession session
@ModelAttribute("userInfomation") User user){

}
 
Sửa lần cuối:

yuen26

New Member
5/2/17
1
0
0
24
Những thuộc tính nào mà bạn k dùng đến trong form thì để trong thẻ hidden như id nhé
 

Dapruoi

New Member
5/6/16
18
1
3
28
nếu như vậy lỡ bọn hacker nó thấy được thông tin của mình thì sao , với lại nhỡ phải truyền 1 số lượng dữ liệu khá lớn về không lẽ lại ngồi viết cả đống hidden input
 

badboy3283

Active Member
20/10/11
295
89
28
District BT, HCM City
Chuyền qua chuyền lại, dân trong nghề biết cách debug là thấy hết rồi, muốn không bị hack phải xử lý ở server side nhé bạn.

Request --> Render HTML --> Client --> Submit --> Server --> Validate --> Permission --> Write --> Commit
 

Dapruoi

New Member
5/6/16
18
1
3
28
thanks bạn chắc để sau này đi làm học hỏi thêm giờ dừng lại ở mức đồ an môn học...