2015-04-03 28 views
2

使用SPEL我有一個控制器方法如下如何隨着正則表達式中RequestMapping

在這裏,我硬編碼芒果,橘子和葡萄,例如,如果URL與任何的這些比賽,那麼只有這個方法應該執行。

我想要做的是,而不是在這裏硬編碼這些水果。我想在屬性文件中聲明它們,並且使用SPEL,我應該把它帶到這裏。

這可能嗎?

我想下面這段代碼,但失敗,錯誤:

@RequestMapping(value = "/{fruitName:#{fruit['seasonFruit.requestMapping']}}", method = RequestMethod.GET) 
public String viewFruit(ModelMap model, @PathVariable String fruitName) { 
    ... 
} 

對於以下的屬性文件(fruit.properties

seasonFruit.requestMapping = Mango|Orange|Grapes 

請建議,如何才能實現?

+0

不,這是不可能的。 '@ RequestMapping'不支持SpEL和屬性佔位符分辨率。 – 2015-04-03 08:42:53

+0

@ArtemBilan那麼,我們有沒有辦法做到這一點?通過硬編碼分離 – Abhi 2015-04-03 11:57:54

回答

2

@ArtemBilan So, isn't there any way by which we could achieve this? By separation of hard coding

嗯,我希望你能做到這一點從代碼:

@Value("#{ environment['seasonFruit.requestMapping'] }") 
private String fruitName; 

@RequestMapping(value = "/{fruitName:[a-z]", method = RequestMethod.GET) 
public String viewFruit(ModelMap model, @PathVariable String fruitName) { 
    if (fruitName.matches(this.fruitName)) 
} 
1

你可能不能夠使用從屬性文件加載的正則表達式和值的組合直接requestMapping。但我能夠在示例應用程序中實現。基本上我從屬性文件解決整個正則表達式模式,而不僅僅是它的值。 RequestMapping可以解析屬性文件中的值。希望這有助於。

屬性文件

sample.test={url:mango|orange} 

控制器的方法:

@RequestMapping(value = { "/example/${sample.test}" }, method = RequestMethod.GET) 
    public String testPattern(@PathVariable String url) { 
     System.out.println("url:" + url); 
     return sample;  
    } 
相關問題