2011-09-30 44 views
10

Tôi muốn sử dụng thẻ ẩn mùa xuân trong mã bên dưới. Điều này có thể xảy ra trong đoạn mã dưới đây hay không, những gì tôi phải viết trong bộ điều khiển của mình để làm điều đó hoặc những gì tôi đang làm là chính xác.Trường ẩn trong mùa xuân MVC

<c:forEach var="record" items="${records}"> 
    <tr> 
     <td> 
      <form:form id="myForm" action="list.html" method="post"> 
       <input type="hidden" name="record" value="${record}" /> 
       <a href="#" onclick="document.getElementById('myForm').submit();">Submit</a> 
      </form:form> 
     </td> 
    </tr> 
</c:forEach> 

Mọi trợ giúp sẽ được đánh giá cao.

Cảm ơn

+0

là câu hỏi của bạn liệu bạn có thể ràng buộc trường đó trở lại biểu mẫu không? – tolitius

+0

Vâng, tôi nghĩ, Bạn có thể thấy rằng ở đây tôi đang sử dụng cho vòng lặp và biến ẩn sẽ được dân cư với thời gian chạy vòng lặp vì vậy nếu tôi sử dụng

Trả lời

14

Bạn đang đi đúng hướng [tùy thuộc vào những gì đậu ủng hộ của bạn là], nhưng để ràng buộc một ID như một lĩnh vực ẩn trên trình tự động đến một "Person" đậu (trong này chẳng hạn), bạn sẽ làm điều gì đó như:

<c:forEach var="person" items="${persons}" varStatus="status"> 
    <tr> 
     <c:set var="personFormId" value="person${status.index}"/> 
     .... 
     <form id="${personFormId}" action="${deleteUrl}" method="POST"> 
      <input id="id" name="id" type="hidden" value="${person.id}"/> 
     </form> 

     <td>${person.firstName}</td> 
     <td>${person.lastName}</td> 
     .... 
    </tr> 
</c:forEach> 

Trong trường hợp bạn muốn làm một lĩnh vực ẩn, bạn sẽ sử dụng một thẻ form:hidden:

<form:hidden path="id" /> 

Hãy xem Hidden Input Tag phần tài liệu Spring.

2

Trong phần còn lại của câu trả lời này, hãy thay thế "xóa" và "đã xóa" bằng thao tác bạn đang cố triển khai. ví dụ: "đã phát nổ", "bị cắn" hoặc "chỉnh sửa"

Mã JSP bạn đã đăng có một số vấn đề.

  1. không đóng thẻ cho phần tử <td>.
  2. biểu mẫu của bạn được đăng lên "items.html". Điều này có vẻ là một trang html. Nếu vậy, hành động biểu mẫu của bạn là chính xác 0%.
  3. mọi biểu mẫu đều có cùng id, do đó cuộc gọi getElementById() không bao giờ có thể hoạt động.
  4. href="#" sẽ làm cho trang của bạn cuộn lên đầu khi người dùng nhấp vào liên kết.
  5. Bạn không xác định, cho người dùng, hồ sơ sẽ bị xóa.

Dưới đây là những gì tôi nghĩ rằng bạn muốn:

<c:forEach var="record" items="${records}"> 
    <tr> 
     <td> 
      <form:form method="post"> 
       <input type="hidden" name="activity" value="delete"/> 
       <input type="hidden" name="record" value="${record}"/> 
       <a href="javascript:this.form.submit()">Delete ${record}</a> 
      </form:form> 
     <td> 
    </tr> 
</c:forEach> 

Đoạn sẽ gửi tới bộ điều khiển mùa xuân hiện tại. Hai trường được bao gồm trong bài đăng: "hoạt động" xác định đây là xóa và "bản ghi" xác định hồ sơ sẽ bị xóa. Dựa trên nhu cầu của bạn, hãy thêm action="some url" vào thẻ form:form.

2

Tôi nghĩ rằng tôi đã giải quyết được sự cố. Nếu tôi viết thẻ đầu vào như thế này

<form:hidden path="id" value="${record}" /> 

theo cách này tôi có thể gán giá trị của biến ẩn nhưng khi tôi nhìn vào mã html render của nó như thế này

<input type="hidden" value="0" name="record" value="10"/> 

tạo ra các giá trị thuộc tính hai lần và lấy giá trị tôi muốn là 10. Nhưng nó giải quyết được vấn đề của tôi. Nếu bất cứ ai có thêm ý kiến ​​về điều này thì điều đó sẽ được đánh giá cao.

+0

Sử dụng Spring 1.4.0 và nó hiển thị '' –

Các vấn đề liên quan