2010-10-28 28 views
12

Tôi có một bộ điều khiển đã ràng buộc URL: "/ ruleManagement".Spring MVC: Các vấn đề URL tương đối

Bên trong JSP của tôi, tôi có biểu mẫu chuyển tiếp (khi gửi) đến url "ruleManagement/save". Khi có lỗi với các trường nhập, tôi muốn nó quay trở lại dạng xem ban đầu. Đây là nơi sự cố bắt đầu ...

Vấn đề 1) Bây giờ URL là "/ ruleManagement/save", biểu mẫu gửi bây giờ trỏ tới "/ ruleManagement/ruleManagement/save".

Vấn đề 2) Tôi đã thử sử dụng thẻ url: spring để tạo đường dẫn tuyệt đối cho tôi, thường hoạt động tốt. Nhưng khi tôi đặt một mùa xuân: thẻ url bên trong của một thẻ, mùa xuân: thẻ url không được phân tích cú pháp chính xác.

<form:form action="<spring:url value='/ruleManagement/save' ...>" method="post"> 

Khi tôi phân tích DOM sau khi tải trang, thẻ hình thức của tôi trông giống như sau:

<form action='<spring:url value="/ruleManagement/save" />' ... > 

Nếu tôi không sử dụng vào mùa xuân: thẻ url, và thay vào đó sử dụng chỉ là "/ ruleManagement/save ", url được tạo không bao gồm tên ứng dụng của tôi trong url, điều này cũng sai.

Làm cách nào để tạo mẫu URL nhất quán trên tất cả các Chế độ xem bất kể đường dẫn? Nếu câu trả lời là "sử dụng spring: url", làm cách nào để nhận nội dung đó bên trong biểu mẫu: thẻ biểu mẫu?

+0

Nếu bạn chỉ cố gắng để kiểm soát các cơ sở cho tương đối URL, tại sao không sử dụng thẻ ''? – usethe4ce

Trả lời

23

Không thể sử dụng thẻ tùy chỉnh trong JSP trong thuộc tính của các thẻ tùy chỉnh khác, vì vậy bạn cần lưu trữ kết quả trung gian trong thuộc tính yêu cầu (sử dụng var để chuyển hướng đầu ra của thẻ đến thuộc tính yêu cầu là thành ngữ phổ biến được hỗ trợ bởi nhiều thẻ):

<spring:url var = "action" value='/ruleManagement/save' ... /> 
<form:form action="${action}" method="post"> 
+0

cảm ơn hoàn hảo! – Corey

3

Tôi cũng rất muốn có thể tạo đường dẫn URL nhất quán trên tất cả các Chế độ xem! Có thể thực hiện điều này với <spring:url .../>.

Để trả lời câu hỏi thứ hai của bạn & tacking trên để trả lời axtavt của, nhúng <spring:url ... /> vào hình thức hành động sau khi thêm tài sản htmlEscape="true"

Ví dụ: <form:form action="<spring:url value="/ruleManagement/save" htmlEscape="true" .../>" method="post">

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