2010-07-19 37 views
6

Tôi có thiết lập ứng dụng thử nghiệm grails với ngữ cảnh "/ testapp". Khi tôi thêm một liên kết trong gsp của tôi mà tham chiếu/nó không đi đến thư mục gốc của grails.app.context của tôi, nhưng đến thư mục gốc của thuộc tính grails.serverURL của tôi.ngữ cảnh gốc của ứng dụng grails

Ví dụ cho một liên kết với href "/css/main.css"

Tôi hy vọng rằng liên kết này sẽ thực sự nhìn vào localhost: 8080/testapp/css/main.css thay vì localhost: 8080/css/main.css

Có cách nào để tôi có thể tham khảo/bắt đầu tại grails.app.context của mình so với grails.serverURL không?

Trả lời

6

câu hỏi là làm cách nào để bạn thêm liên kết vào gps?

Chúng tôi làm những việc như

<link rel="stylesheet" href="${resource(dir: 'css', file: 'stylesheet1.css')}"/> 

<g:javascript library="prototype"/> 

bằng g: javascript và tài nguyên thẻ và phương pháp, bạn nói với grails để thiết lập đường dẫn cho bạn ...

Tôi nghi ngờ bạn chỉ đang đặt các thẻ chuẩn trong ...

goto

http://grails.org/doc/latest/

và, dưới thẻ trong nav tay trái, tìm kiếm nguồn lực và/hoặc javascript để có được một ý tưởng (khó khăn của mình để liên kết trực tiếp vào các tài liệu ... :()

+0

Cảm ơn vi đa trả lơi. Chúng tôi đang sử dụng các thư viện thẻ, nhưng chúng tôi có một tình huống với một thư viện bên ngoài có một hardcoded/path/to/css mà chúng tôi không thể thay đổi. Có vẻ như chúng ta sẽ phải tìm một công việc xung quanh. – ibuck

19

sử dụng giá trị yêu cầu contextPath trên trang

${request.contextPath} 

và sau đó thêm vào trước các thông tin máy chủ bổ sung nếu cần thiết để xây dựng các url đầy đủ

1

Bạn có lẽ nên được sử dụng thẻ tài nguyên vào thư mục CSS grails của bạn, như đã đề cập ở trên. Tuy nhiên, bạn cũng có thể sử dụng phương pháp resource để tìm bối cảnh gốc của bạn ứng dụng web sử dụng thẻ giống nhau:

${resource(uri:'/')} 

sau đó chỉ cần sử dụng chuỗi mà bất cứ nơi nào.

0

Và khi nói đến các yếu tố như stylesheets tôi khuyên bạn nên tạo ra một thẻ đơn giản mà sẽ làm các trick, một cái gì đó dọc theo những đường:

class StylesTagLib { 
    static namespace = "g" 

    def stylesheet = { args, body -> 
     out << """<link rel="stylesheet" href="${resource(dir: 'css', file: args.href)}"/>""" 
    } 
} 

và sau này trong mã của bạn sử dụng nó như thế này:

<g:stylesheet href="main.css"/> 

Rõ ràng bạn có thể fiddle với các công ước (tôi nên sử dụng một thư mục được xác định trước? tôi nên thêm phần mở rộng .css thứ tự động? như thế) nhưng ý tưởng chung là để che giấu sự xấu xa đằng sau một thẻ độc đáo xác định.

6

Tôi có vấn đề tương tự với OP - cách liên kết biểu mẫu grails bắt đầu ở gốc ngữ cảnh và KHÔNG phải là máy chủ gốc?

Bạn có thể làm như vậy bằng cách sử dụng thuộc tính "uri" cho thẻ g: link và g: createLink.Ví dụ:

<g:link uri="/login">login</g:link> 

sẽ tiền tố bất kì hoàn cảnh nếu được áp dụng, và tạo ra những điều sau

<a href="/login">login</a> if your app is at the http://server/ 
<a href="/testapp/login">login</a> if your app is at http://server/testapp/ 

Không chắc lý do tại sao nó là một undocumented thuộc tính trong các tài liệu tham khảo, nhưng tôi tìm thấy nó trong Javadocs - ApplicationTagLib

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