2015-02-10 2 views
2

Поскольку теперь web.xml будет генерироваться динамически, мне нужно будет добавить простой класс фильтра вверху, не записывая или не используя плагин. Какой код мне нужен и куда его поместить?Grails 3 - манипулирование web.xml

Или я мог бы каким-то образом получить шаблон того, что grails будет генерировать для web.xml, и я мог бы изменить и переопределить его?

я видел в документации

grails.war.resources = { stagingDir, args -> 
    copy(file: "grails-app/conf/custom-web.xml", 
     tofile: "${stagingDir}/WEB-INF/web.xml") 
} 

но первый: будет эта функция в application.yml?

и второй: я по-прежнему нужен подходящий шаблон web.xml для изменения ...

Спасибо!

ответ

-3

Вы можете использовать команду установки-шаблоны, которые будут копировать шаблоны в папку SRC/шаблонов, там вы найдете шаблон web.xml внутри каталога войны, вы можете настроить его

См http://www.grails.org/doc/latest/ref/Command%20Line/install-templates.html

+0

спасибо, но нет "установка-шаблоны" в Grails 3 больше – rawi

+0

Grails 3? в какой точной версии, grails 2.4.4 есть –

+0

3.0.0.M1, версия, которая будет следующей с некоторыми нарушениями. Вот почему стоит начать с этого заранее;) – rawi

0

я знаю это не вопрос к реальному вопросу, но добавление фильтров стиля «springboot» просто предоставляет для него @Bean. Например. вы можете просто положить его в grails-app/conf/spring/resources.groovy. Более подробную информацию можно найти по адресу: How to add a filter class in Spring Boot?

Grails 3 охватывает Springboot и с этим пришел распрощаться с XML на основе конфигурации (не говоря, что это запрещено, но его обескураженным)

4

С предложением cfrick, я попробовал это, (применяется к граалам 3)

Создать фильтр, например [Grails-проект] /src/main/java/hello/SimpleCORSFilter.java (Создать папку 'Java', или создать SimpleCORSFilter.groovy в [Grails-проекта/SRC/каталог главная/заводной)

Вы можете использовать пример в one of the spring guides.

package hello; 

import java.io.IOException; 
import javax.servlet.Filter; 
import javax.servlet.FilterChain; 
import javax.servlet.FilterConfig; 
import javax.servlet.ServletException; 
import javax.servlet.ServletRequest; 
import javax.servlet.ServletResponse; 
import javax.servlet.http.HttpServletResponse; 
import org.springframework.stereotype.Component; 

@Component 
public class SimpleCORSFilter implements Filter { 

    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { 
     HttpServletResponse response = (HttpServletResponse) res; 
     response.setHeader("Access-Control-Allow-Origin", "*"); 
     response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE"); 
     response.setHeader("Access-Control-Max-Age", "3600"); 
//  response.setHeader("Access-Control-Allow-Headers", "x-requested-with"); 
     // I used this instead 
     response.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); 
     chain.doFilter(req, res); 
} 

    public void init(FilterConfig filterConfig) {} 

    public void destroy() {} 

} 

Затем в [Grails-проект] /grails-app/conf/spring/resources.groovy, добавить фильтр, например,

import hello.SimpleCORSFilter 

// Place your Spring DSL code here 
beans = { 
    myFilter(SimpleCORSFilter) 
} 

Кроме того, в Grails документы, чтобы заказать фильтр:

import hello.SimpleCORSFilter 
import org.springframework.boot.context.embedded.FilterRegistrationBean 
import org.springframework.core.Ordered 

myFilter(FilterRegistrationBean) { 
    filter = bean(SimpleCORSFilter) 
    urlPatterns = ['/*'] 
    order = Ordered.HIGHEST_PRECEDENCE 
} 
+0

Спасибо. У меня был фильтр, но я не смог его подключить. Мне было легче редактировать web.xml. Зиро указал мне на тот же FilterRegistration: http://stackoverflow.com/questions/28475431/grails-3-0-0-m1-create-plugin-could-not-find-method-bintray – rawi