2017-03-08 3 views
0

PrettyFaces 3.3.3 및 Wildfly 10.1.0.Final에서 실행되는 webapp가 있습니다. URL을보다 사용자 친화적으로 만들기 위해 PrettyFaces를 사용했습니다.예쁜 URL은 PrettyFaces를 사용하여 리소스를 숨 깁니다.

private String language; 
private String zone; 

갖는 값 :

language = "en" 
zone = "drinks" 

문제 빈 내부에 두 개의 변수가 될 것이다이 경우

http://www.example.com/en/drinks 

:에 유효한 URL의 예는 유사하다 경로가있는 CSS 파일도 있습니다.

http://www.example.com/styles/style.css 

PrettyFaces 잘못 실제 리소스에 액세스에서 저를 방지,이 해석 :

language = "styles" 
zone = "style.css" 

나는 CSS 파일의 URL을 번역하지 PrettyFaces을 말할 수있는 방법을 찾기 위해 노력했다,하지만 난 아무것도 찾을 수 없습니다 그런 식으로.

예쁜 URL을 유지하여 CSS 파일에 액세스 할 수있는 방법이 있습니까?

나의 현재 PrettyFaces의 설정은 다음과 같습니다

<url-mapping id="zoneSelected"> 
    <pattern value="/#{navigationController.language}/#{navigationController.zone}" /> 
    <view-id>/faces/index.xhtml</view-id> 
</url-mapping> 

답변

2

PrettyFaces 정규 표현식에 대한 들어오는 요청을 일치합니다. 이 같은

패턴 :

<pattern value="/#{bean.language}/#{bean.zone}" /> 

이 같은 정규 표현식으로 변환됩니다

/[^/]+/[^/]+ 

기본 PrettyFaces가 있기 때문입니다 모든 경로 매개 변수에 대한 [^/]+ 사용합니다.

이러한 일반적인 패턴은 CSS 또는 이미지 파일과 같은 다른 리소스와도 일치합니다.

이 문제를 해결하는 한 가지 방법은 PrettyFaces가 path 매개 변수에 사용할 일반 표현식 패턴을 사용자 지정하는 것입니다. 이것은 쉽게 할 수 있으며 여기에서 설명 :

http://www.ocpsoft.org/docs/prettyfaces/3.3.3/en-US/html/Configuration.html#config.pathparams.regex

그래서 기본적으로 그냥 대신 패턴을 사용 :이 경우 당신의 스타일에

/[a-z]{2}/[^/]+ 

:

<pattern value="/#{ /[a-z]{2}/ bean.language }/#{bean.zone}" /> 

이가 번역됩니다 시트가 더 이상 패턴과 일치하지 않습니다.

관련 문제