Как добавить пользовательские строки запроса в ресурсы Grails, используя маппер? - PullRequest
1 голос
/ 22 марта 2012

Я хотел бы создать средство отображения ресурсов Grails, которое добавляет строку запроса к actualUrl.Пока что все попытки потерпели неудачу, но, возможно, я поступаю неправильно.Ниже приведен пример кода:

import org.grails.plugin.resource.mapper.MapperPhase
import org.apache.commons.logging.LogFactory

class GlobalizationResourceMapper {

    def log = LogFactory.getLog(this.class)
    def phase = MapperPhase.RENAMING
    def operation = "globalizationquerystring"
    def priority = -1

    static defaultExcludes = ['**/*.png', '**/*.gif', '**/*.jpg', '**/*.jpeg', '**/*.gz', '**/*.zip']
    static defaultIncludes = ['**/*.js','**/*.gsp']

    /**
     * Cache the resource based on current language in use. Do this by appending a query string on the resource URL indicating language.
     */
    def map(resource, config) {
        def query = [l:'en_US']
        resource.actualUrl = resource.actualUrl + '?' + query.collect { it }.join('&')
        if (log.debugEnabled) log.debug "Modified URL: ${resource.actualUrl}"
        log.info "Modified URL: ${resource.actualUrl}"
    }
}

Фактический URL-адрес изменяется соответствующим образом, но любой запрашиваемый ресурс заканчивается в цикле перенаправления и 404-х.

1 Ответ

0 голосов
/ 22 марта 2012

Вы можете добавить параметры к URL в *Resources.groovy, т. Е. В точке, где ресурс объявлен (а не в маппере), используя:

resource url: '/js/foo.js', wrapper: { baseUrl ->          
  def query = [l:'en_US']
  baseUrl + '?' + query.collect { it }.join('&')
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...