Cũng có hai phương pháp để truy cập dữ liệu này dễ dàng hơn, nhưng giao diện không cung cấp khả năng nhận toàn bộ URL bằng một cuộc gọi. Bạn phải xây dựng theo cách thủ công:
public static String makeUrl(HttpServletRequest request)
{
return request.getRequestURL().toString() + "?" + request.getQueryString();
}
Tôi không biết cách làm điều này với bất kỳ cơ sở nào của Spring MVC.
Nếu bạn muốn truy cập các yêu cầu hiện tại mà không đi qua nó ở khắp mọi nơi bạn sẽ có thêm một người biết lắng nghe trong web.xml:
<listener>
<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
Và sau đó sử dụng này để có được những yêu cầu ràng buộc với chủ đề hiện tại:
((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes()).getRequest()
Ok, đây là một cách tiếp cận tương tự như những gì tôi đã làm cho đến nay. Nhưng tôi đang tìm kiếm một cách để làm điều này mà không thực sự sử dụng đối tượng 'HttpServletRequest'. Điều này là do tôi đang sử dụng một số lớp/phương thức trợ giúp và tôi không muốn truyền đối tượng yêu cầu mỗi lần. – Koraktor
Ok, tôi biết ý của bạn là gì và thêm thông tin bạn cần để truy cập yêu cầu hiện tại mà không cần chuyển nó đi. – Daff
Cảm ơn bạn đã nhắc nhở về người nghe. Tôi vẫn còn mới đối với Spring (và phát triển web Java nói chung). Tôi hiện đang sử dụng mã của bạn kết hợp với 'UrlUtils' của Spring Security. Làm việc như một say mê. – Koraktor