2010-03-27 33 views
14

Tôi tự hỏi nếu có bất kỳ thực hành tốt để giải quyết bộ điều khiển Spring trong JSP.Spring + JSP url xây dựng thực tiễn tốt nhất

Giả sử tôi có điều khiển:

@Controller 
class FooController { 

    // Don't bother about semantic of this query right now 
    @RequestMapping("/search/{applicationId}") 
    public String handleSearch(@PathVariable String applicationId) { 
    [...] 
    } 
} 

Tất nhiên trong JSP tôi có thể viết:

<c:url value="/search/${application.id}" /> 

Nhưng nó rất khó để thay đổi url sau đó. Nếu bạn đã quen thuộc với Rails/Grails thì giờ đây bạn đã giải quyết được vấn đề này như thế nào:

redirect_to(:controller => 'foo', :action = 'search') 

Nhưng vào mùa xuân, có rất nhiều UrlMappers. Mỗi UrlMapper có lược đồ ngữ nghĩa và ràng buộc riêng. Rails cũng giống như chương trình đơn giản là không hoạt động (trừ khi bạn thực hiện nó cho mình). Và câu hỏi của tôi là: có cách nào thuận tiện hơn để giải quyết bộ điều khiển từ JSP trong mùa xuân?

Trả lời

10

Tôi hy vọng tôi hiểu câu hỏi của bạn. Tôi nghĩ rằng bạn hỏi về làm thế nào để duy trì url khi chuỗi url trong jsp và ánh xạ điều khiển.

Bộ điều khiển của bạn nên thực hiện logic, JSP của bạn nên thực hiện đầu ra. Xây dựng một Url phải là trách nhiệm của bộ điều khiển xử lý nó. Vì vậy,

class SearchController { 

    @RequestMapping("/search/{applicationId}") 
    public String handleSearch(@PathVariable String applicationId) { 
    [...] 
    } 

    public String getUrl(Long applicationId) { 
     return "/search/" + applicationId; 
    } 
} 

class StartController { 
    private SearchController controller; 

    @ModelAttribute("searchUrl") 
    public String getSearchUrl() { 
     return fooController.getUrl(applicationId); 
    } 
} 

và start.jsp bạn làm

<c:url value="${searchUrl}" /> 
+0

Hmm ... Rất tiện lợi khi xây dựng url. Cảm ơn –

+1

+1 Tôi đã có một thời gian khó khăn bao quanh đầu của tôi xung quanh @ ModelAttribute-on-a-phương pháp cho đến bây giờ. Cảm ơn bạn! –

0

Hãy thử sử dụng Apache như một kết thúc phía trước để remap các URL:

http://www.simonecarletti.com/blog/2009/01/apache-rewriterule-and-query-string/

Bằng cách này bạn có thể thay đổi các tham số applicationId từ một chuỗi truy vấn vào một URL thân thiện.

Thêm vào đó, đây là tài liệu cho mod_rewrite: http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html

+0

Tôi nhận ra rằng ví dụ này là trong PHP, nhưng nó phải viết lại url của bạn vào một URL thân thiện anyway. (Sẽ không thành vấn đề nếu bạn đang sử dụng JSP/Spring hoặc những gì bạn định sử dụng.) – leeand00

+0

(Ngoài ra, bạn cần kết nối vùng chứa Servlet của mình với Apache để các yêu cầu từ Apache được chuyển tiếp đến hộp chứa Servlet của bạn và các phản hồi được chuyển trở lại thông qua Apache trở lại cho người dùng.) – leeand00

+1

Tôi không chắc chắn nếu điều này phù hợp với câu hỏi của anh ta. Dù bằng cách nào, cách Java EE sẽ là một bộ lọc như thế này: http://tuckey.org/urlrewrite/ – BalusC

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