2014-11-01 3 views
0

이 스프링 MVC 컨트롤러 CityName이 동적 URL에서로드 여기스프링 MVC 컨트롤러 - URL 제한을 수행하는 방법

@RequestMapping(value = "/city/{cityName}") 
    public String getCity (@PathVariable("cityName") String cityName, Model uiModel) { 

} 

www.example.com/city/{cityName} 

/도시/{CityName이는}, 내 웹 사이트는 에게 그것을 CityName이 중 일부를 지원할 수있다 Kochin, Hyderabad 및 Chennai 만 지원합니다. 다른 도시 또는 cityName 대신에 지원하는 것은 위에서 언급 한 4 개 도시에만 제한하는 방법입니다.

컨트롤러 자체에 어떤 방법이 나 우리는 (하드 코딩 해시 테이블)

가 또는 조회

답변

0

당신이 중 하나를 별도의 컨트롤러 매핑을해야 할 수있는 가장 좋은 방법 인 제안 테이블을 유지해야 어딘가에 cityName입니다. 하드 코딩 할 필요는 없습니다. 대신 YAML 또는 특성 파일을 사용하여 Set을 초기화하거나 데이터베이스에서 찾아 볼 수 있습니다.

1

코드에 네 도시를 하드 코드하려는 경우 @RequestMapping의 정규 표현식을 사용하여 지정할 수 있습니다.

@RequestMapping("/cities/{cityName:Bengaluru|Kochin|Hyderabad|Chennai}") 
public String getCity(@PathVariable("cityName") String cityName) { 

} 

당신이 404

업데이트 자동으로 HTTP에게 돌아갑니다 허용되는 값을 컨트롤러 일치하지 않는 도시를 지정하면 그 방법 : 샘플을 고정은, 정규식, @RequestMapping@PathVariable을하지 가야한다 , 실수 죄송합니다

+0

고마워, 대신에 작은 변화, Pathvariable 대신 RequestMapping을 변경하십시오. –

+0

예, 한 시간 전에 그 실수를 발견하고 대답을 업데이트했습니다. 그 죄송합니다. 어쨌든, 다행 당신을 위해 :) –

0

우리는 컨트롤러 수준에서 정적으로 @RequestMapping을 수행 할 수 있습니다 (값 = "/ 도시/{CityName이 : 벵갈 루루 | 첸나이 | 코친 | 라 바드}") 또는 우리는 테이블, 쿼리를 작성하고 그것을 넣을 수 있습니다 응용 프로그램 시작시 해시 테이블.

관련 문제