2010-07-19 20 views
6

Ho una configurazione dell'app test grails con un contesto di "/ testapp". Quando aggiungo un link nel mio gsp che fa riferimento/non va alla radice del mio grails.app.context, ma alla radice della mia proprietà grails.serverURL.grails app root context

Per esempio dato un legame con href "/css/main.css"

mi aspetterei che questo legame sarebbe effettivamente guardare in localhost: 8080/testapp/css/main.css invece di localhost: 8080/css/main.css

C'è un modo per ottenere i riferimenti da/per iniziare sul mio grails.app.context vs grails.serverURL?

risposta

6

la domanda è: come si aggiungono i collegamenti ai propri gsps?

Facciamo le cose come

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

e

<g:javascript library="prototype"/> 

utilizzando il g: JavaScript e risorse tag e metodi, ti dicono graal per impostare il percorso per voi ...

Sospetto che stiate solo inserendo tag standard in ...

goto

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

e, sotto i tag nelle nav mano sinistra, per cercare di risorse e/o javascript per avere un'idea (la sua difficile collegarsi direttamente ai documenti ... :()

+0

Grazie per la risposta. Stiamo usando le librerie di tag, ma abbiamo una situazione con una libreria esterna che ha un hardcoded/path/to/css che non possiamo cambiare. Sembra che dovremo trovare un lavoro. – ibuck

19

uso il valore di richiesta di contextPath sulla pagina

${request.contextPath} 

e poi anteporre le informazioni host aggiuntivo, se necessario, per costruire l'URL completo

1

probabilmente si dovrebbe utilizzare il tag risorsa nella directory CSS di Grails, come menzionato sopra. Tuttavia, è anche possibile utilizzare il metodo resource per trovare il contesto radice di voi un'applicazione web utilizzando lo stesso tag:

${resource(uri:'/')} 

poi basta usare quella stringa ovunque.

0

E quando si tratta di elementi come fogli di stile mi consiglia la creazione di un semplice tag che farò il trucco, qualcosa del genere:

class StylesTagLib { 
    static namespace = "g" 

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

e più tardi nel codice usare in questo modo:

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

Ovviamente si può giocherellare con le convenzioni (dovrei usare una cartella predefinita? dovrei aggiungere l'estensione css automaticamente? roba del genere), ma l'idea generale è quella di nascondere la bruttezza dietro un tag ben definito.

6

Ho avuto un problema simile a OP: come si formano i collegamenti Grails che iniziano con la root di contesto e la radice del server NOT?

È possibile utilizzare l'attributo "uri" per i tag g: link e g: createLink.Per esempio:

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

sarà precedere qualsiasi contesto, se applicabile, e produrre il seguente

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

Non certo perché si tratta di un attributo undocumented nella documentazione di riferimento, ma ho trovato nel Javadocs - ApplicationTagLib

Problemi correlati