이 규칙은 JSP 파일에서 '#{' 순서의 사용을 플래그 지정합니다.
JSP 2.1에서, #{} 구문은 현재 예약된 키워드입니다.
#{} 순서를 포함하는 이전 JSP 파일을 JSP 2.1에서 사용하는 경우
오류가 발생합니다.
#{ 순서를 발견하려면 다음 조건을 충족해야 합니다.
- 서블릿 버전(web.xml에서)이 2.4 이상이어야 합니다.
- 페이지에 isELIgnored="true" 세트 지시문이 없어야 합니다.
- 페이지가 <el-ignored>가 true로 설정된 <jsp-property-group>(web.xml의 <jsp-config>에서)의 <url-pattern>에 맵핑되지 않아야 합니다.
- #{ 항목이 jsp 템플리트 텍스트에 있어야 합니다.
- 항목은 JSF(Java Server Faces) 태그가 아닌 태그에 있습니다.
이 규칙은 "다음 접두부를 사용하는 태그 무시" 규칙 특성에서 제공하는 접두부 목록과 태그 접두부를 비교하여 JSF 태그를 발견합니다.
생략된 JSF 접두부의 기본값은 다음과 같습니다.
h,f,ui,facelet,composite,comp,ez.
다음 항목에 유의하십시오.
- 이러한 태그를 무시하려면 애플리케이션에서 정의한 기타 JSF 접두부를 사용자가 추가해야 합니다.
- JSP 페이지에서 접두부를 사용했지만, 이 접두부가 JSF 태그가 아닌 경우에는 사용자가 접두부 매개변수에서 임의의 항목을 제거해야 합니다.
- 어떤 경우에는 접두부를 JSF 접두부로 사용하고 다른 경우에는 보통의 JSP 태그로 사용한 경우에는 접두부를 매개변수 목록에 포함하지 말고 생성된 각 결과를
수동으로 조사해야 합니다.
자동 수정은 #{ 구문 앞에 이스케이프 문자를 추가합니다.
예시:
|
<h1>This is an example of template text that will be detected: #{detected}</h1>
|
자동 수정은 이 코드를 다음과 같이 변경합니다:
|
<h1>This is an example of template text that will be detected: \#{detected}</h1>
|
또한 다른 방식으로도 EL(Expression Language)을 비활성화시킬 수 있습니다.
- 모든 EL 표현식에 대해 페이지별 기준: 개발자가 JSP 페이지 지시문의 isELIgnored 속성을 지정하고 이 값을 true로 설정할 수 있습니다.
예제:
|
<%@ page isELIgnored ="true" %>
|
이는 해당 페이지에 대한 모든 EL 표현식을 끕니다 (즉, 모든
${exp} and #{exp}
)
- web.xml의 JSP 특성 그룹 설정: 개발자는 el-ignored 요소를 true로 설정하여 특정 URL 패턴에 기반하여 단일 페이지 또는 여러 페이지에 대해 EL을 비활성화시킬 수 있습니다.
예를 들어,
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<el-ignored>true</el-ignored>
</jsp-property-group>
|
- web.xml에서 EL 지연 구문(#{})만 비활성화하는 JSP 특성 그룹 사용
예를 들어,
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<deferred-syntax-allowed-as-literal>true</deferred-syntax-allowed-as-literal>
</jsp-property-group> |
- JSP 페이지 지시문의 deferred-syntax-allowed-as-literal 속성을 true로 설정하여 EL 지연 구문에 대해서만 페이지별 기준
예제:
|
<%@ page deferredSyntaxAllowedAsLiteral="true" %>
|
우선순위에 대한 참고사항:
페이지 지시문의 isELIgnored 및 deferredSyntaxAllowedAsLiteral 속성이 web.xml의 개별 요소와 값에 우선합니다.
이러한 페이지 지시문 속성이 web.xml의 개별 요소 값을 대체합니다.
추가 정보는 다음을 참조하십시오.