2010-07-19 17 views
6

"/ testapp" içeriğine sahip bir test notları uygulama kurulumum var. Gsp'de bir bağlantı eklediğimde bu referanslar/grails.app.context öğesinin köküne değil, grails.serverURL özelliğimin köküne gitmez.grails app kök içeriği

Örneğin "/css/main.css" href ile bir bağlantı verilen

Şu bağlantı aslında localhost bakmak olurdu beklenebilir

: yerine localhost 8080/TestApp/css/main.css: 8080/css/main.css

grails.app.context sayfamda grails.serverURL ile ilgili başvurular/referanslar alabileceğim bir yol var mı?

cevap

6

Bağlantılar, bağlantılarınızı gsps'inize nasıl eklersiniz?

Biz gramı kullanılarak

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

ve

<g:javascript library="prototype"/> 

gibi şeyler: javascript ve kaynak etiketleri ve yöntemler, sizin için yolunu ayarlamak için grails söyle ...

Sadece standart etiketler koyduğunuzdan şüpheliyim ...

goto

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

ve sol taraftaki gezinme içinde etiketleri altındaki bir fikir edinmek için kaynak ve/veya javascript (dokümanlara doğrudan bağlamak için zor onun ... :()

+0

buldum Cevap için teşekkürler. Etiket kitaplıklarını kullanıyoruz, ancak değiştiremediğimiz bir kodlanmış/path/to/css olan bir dış kütüphaneye sahip bir durumumuz var. Sanki bir iş bulmamız gerekecek gibi görünüyor. – ibuck

19

kullanım için bak muhtemelen kaynak etiketini kullanarak edilmelidir

1

tam URL'yi oluşturmak için gerekirse sayfa sonra

${request.contextPath} 

ve üzerinde istek contextPath değeri ek konak bilgisini başa eklemek Yukarıda belirtildiği gibi, gradler CSS dizinine. Ancak, aynı zamanda aynı etiketi kullanarak size web uygulaması kök bağlamını bulmak için resource yöntemi kullanabilirsiniz:

${resource(uri:'/')} 

sonra sadece her yerde bu dizeyi kullanın.

0

Ve bu doğrultuda hile, bir şeyler yapacağım ben basit etiketi oluşturarak öneriyoruz stil gibi unsurları söz konusu olduğunda:

class StylesTagLib { 
    static namespace = "g" 

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

ve daha sonra kodunuzda bu gibi kullanmak:

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

Açıkçası ama genel bir fikir güzel bir şekilde tanımlanmış etiketi arkasında çirkinliğini gizlemek için (ben .css uzantısı böyle otomatik? şeyler eklemek gerekir? Önceden tanımlanmış bir klasör kullanmalısınız) sözleşmeler ile oynama işini.

6

OP'ye benzer bir sorun yaşadım - bağlam kökünde ve NOT sunucu kökünden başlayan bağları nasıl oluşturacaksınız?

Bunu, g: link ve g: createLink etiketleri için "uri" özelliğini kullanarak yapabilirsiniz.Örneğin:

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

varsa herhangi bağlam önüne ve üretecek

<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/ 

referans dokümanlar içinde bir undocumented nitelik neden emin değilim

aşağıdaki ama Javadocs - ApplicationTagLib