일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 주식 청약 일정
- jquery
- IPO
- 7월 공모주 청약 일정
- 공모주 청약 일정
- css
- java
- 리눅스
- 자바스크립트
- php
- Stock ipo
- linux
- 코드이그나이터
- SQL
- codeigniter
- 오라클
- 주식
- 주식 청약
- JavaScript
- Eclipse
- MYSQL
- 6월 공모주 청약 일정
- 제이쿼리
- 공모주
- html
- 자바
- Oracle
- 공모주 청약
- Stock
- 맥
- Today
- Total
개발자의 끄적끄적
[java/jsp] JSP 처리 중 Page directive: illegal to have multiple occurrences of contentType with different values [펌] 본문
[java/jsp] JSP 처리 중 Page directive: illegal to have multiple occurrences of contentType with different values [펌]
효벨 2020. 8. 5. 02:00[java/jsp] JSP 처리 중 Page directive: illegal to have multiple occurrences of contentType with different values [펌]
저도 개발하다가 엔터가 하나 들어가서 문법오류가 나서..
한참을 해매서.....ㅠㅠ
참고들하시라고 퍼왔습니당!
출처는 아래 명시했습니다!
개발 환경 혹은 타 WAS 에서 잘 사용되던 JSP 를 Tomcat 에 배포하여 처리하려는데 "Page directive: illegal to have multiple occurrences of contentType with different values" 이 발생할 수 있다.
그리고 예를 들어, (old: text/html;charset=euc-kr, new: text/html;charset=EUC-KR) 가 따라올 것이다.
이런 경우 해당 JSP 에 contentType 이 중복 선언되어 있을 것이다. 혹은 JSP 내에 다른 JSP 가 include 되어 있고 두 JSP 에 각각 contentType 이 선언되어 있을 것이다.
그리고 가장 중요한 것은, 그 두 개 이상의 contentType 이 다르다는 것이다.
old: text/html;charset=euc-kr
new: text/html;charset=EUC-KR
와 같이 대소문자 차이, 혹은 공백 차이, 아니면 아예 charset 의 차이 등등 분명히 차이가 있을 것이다.
Tomcat 7.0.57 소스 기준으로 org.apache.jasper.compiler 패키지의 Validator.java 를 보자.
private static final JspUtil.ValidAttribute[] pageDirectiveAttrs = {
new JspUtil.ValidAttribute("language"),
new JspUtil.ValidAttribute("extends"),
new JspUtil.ValidAttribute("import"),
new JspUtil.ValidAttribute("session"),
new JspUtil.ValidAttribute("buffer"),
new JspUtil.ValidAttribute("autoFlush"),
new JspUtil.ValidAttribute("isThreadSafe"),
new JspUtil.ValidAttribute("info"),
new JspUtil.ValidAttribute("errorPage"),
new JspUtil.ValidAttribute("isErrorPage"),
new JspUtil.ValidAttribute("contentType"),
new JspUtil.ValidAttribute("pageEncoding"),
new JspUtil.ValidAttribute("isELIgnored"),
new JspUtil.ValidAttribute("deferredSyntaxAllowedAsLiteral"),
new JspUtil.ValidAttribute("trimDirectiveWhitespaces")
};
public void visit(Node.PageDirective n) throws JasperException {
JspUtil.checkAttributes("Page directive", n, pageDirectiveAttrs,
err);
// JSP.2.10.1
Attributes attrs = n.getAttributes();
for (int i = 0; attrs != null && i < attrs.getLength(); i++) {
String attr = attrs.getQName(i);
String value = attrs.getValue(i);
if ("language".equals(attr)) {
......
} else if ("contentType".equals(attr)) {
if (pageInfo.getContentType() == null) {
pageInfo.setContentType(value);
} else if (!pageInfo.getContentType().equals(value)) {
err.jspError(n, "jsp.error.page.conflict.contenttype",
pageInfo.getContentType(), value);
}
}
관련 참고.
< JspUtil.java >
public static void checkAttributes(String typeOfTag, Node n,
ValidAttribute[] validAttributes, ErrorDispatcher err)
throws JasperException { ... }
public static class ValidAttribute {
String name;
boolean mandatory;
public ValidAttribute(String name, boolean mandatory) {
this.name = name;
this.mandatory = mandatory;
}
public ValidAttribute(String name) {
this(name, false);
}
}
한참 후에 업데이트. 인터파크 쇼핑하다가 반가운 오류를 발견하여 공유한다.
org.apache.jasper.JasperException: /dsearch/include/common.jsp (line: 1, column: 2) Page directive: illegal to have multiple occurrences of contentType with different values (old: text/html; charset=euc-kr, new: text/html;charset=euc-kr)
text/html; 뒤에 공백때문에..
'개발 > java & jsp' 카테고리의 다른 글
스프링(Spring) 파일 업로드(File Upload) [펌] (0) | 2020.08.10 |
---|---|
[JSTL] jstl if else 문 [펌] (0) | 2020.08.05 |
[java/jsp] JSTL - <c:set> 태그 사용법 (0) | 2020.08.05 |
[java] 이클립스 콘솔(Eclipse Console) 출력 라인수 늘리기 (0) | 2020.08.04 |
[JSP] JDBC 에서의 트랜잭션 처리 [펌] (0) | 2020.08.04 |