2015-02-10 44 views
2

由於現在web.xml會動態生成,我需要在它的頂部添加一個簡單的過濾器類,而無需編寫或使用插件。 我需要什麼代碼,我應該在哪裏放置它?Grails 3 - 操作web.xml

或者我可以以某種方式獲得grails爲web.xml生成的模板,我可以修改和覆蓋它?將這項功能在application.yml:

我的文檔

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

但第一中看到的?

和第二:我還是需要一個合適的web.xml模板來改變......

謝謝!

回答

-3

你可以用安裝模板命令,將模板複製到的src/templates目錄,在那裏你會發現戰爭目錄內的web.xml模板,你可以自定義

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

+0

謝謝你,但沒有 「安裝模板」 Grails的3更多 – rawi 2015-02-10 13:47:48

+0

Grails的3?確切的版本,grails 2.4.4有它 – 2015-02-10 13:48:57

+0

3.0.0.M1,接下來的版本會有一些突破性的變化。這就是爲什麼它是提前開始它的價值;) – rawi 2015-02-10 14:01:46

0

我知道這不是真正的問題,但添加過濾器「springboot」風格只是爲它提供了一個@Bean。例如。你可以把它放在grails-app/conf/spring/resources.groovy。更多細節,可以發現:How to add a filter class in Spring Boot?

Grails的3擁抱Springboot並與附帶的再見基於XML的配置(不是說這是被禁止的,但它的泄氣)從cfrick的建議

4

,我想這一點, (適用於grails 3)

創建一個過濾器eg [Grails的項目] /src/main/java/hello/SimpleCORSFilter.java (創建的Java「目錄,或在[Grails的項目創建SimpleCORSFilter.groovy/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對我來說更容易。 Zyro指出我在這裏相同的FilterRegistration:http://stackoverflow.com/questions/28475431/grails-3-0-0-m1-create-plugin-could-not-find-method-bintray – rawi 2015-03-26 10:33:01