본문 바로가기

자바 웹을 다루는 기술

USD_RATE cannot be resolved to a variable


이번에도 에러났다

USD_RATE를 변수로 확인할 수 없다고 한다.

 

그렇다고 한다!

 

이클립스에서 cannot be resolved to a variable 에러가 다수 발생한다..

이 에러는 JSP Include 시 Include된 파일에서 선언한 변수를 참조하기 못해 발생하는 에러다.

 

제대로 개발된 소스라면..

실행 자체에는 문제없다, 다만 보기 싫을 뿐인데.. 나처럼 신경이 쓰인다면 경고하지 않도록 아래와 같이 설정해보자

 

이클립스

Window → Preferences → Web → JSP Files → Validation → Expression Language → EL Syntax problem 를 Ignore 로 설정

 

 

 

 

 

그런데 EL 이 무엇인데..

문법문제를 Ignore(무시) 설정해도 되는것일까?

 

EL(Expression Language) 이란
- 표현식으로 attribute나 parameter 등을 JSP파일에서 출력할 용도로 사용하는 언어
- JSP 2.0에서 추가된 스크립트 언어
- 기존의 expression tag(<%= %>)의 업그레이드 버전
- attribute를 출력할 때는 $[애트리뷰트 이름]으로 출력하고,
- 파라미터는 ${param.이름} 또는 ${paramValue.이름[인덱스]}의 형태로 출력

 

라고 정의되어 있다. 즉. ${변수명} 등으로 표현된 표시에 대한 문법을 무시하라는 설정으로

EL Syntax problem 에 대해 Ignore 설정 후에는, 개발할때 EL에 대한 체크를 도움받지 못하는 것이니 기억해야 할것이다.

 

 



출처: https://www.ihee.com/159 [희야의 소소한 일상]

 


 

라고해서 될줄 알았는데 안됐다. 근데 저 USD_RATE가 어디에 선언된 변수일까 객체안에 있는 앤가?

싶었다. 그런데 예제코드를 찾아보니 

public class CalcServlet extends HttpServlet {
private static float USD_RATE = 1124.70F;
private static float JPY_RATE = 10.113F;
private static float CNY_RATE = 163.30F;
private static float GBP_RATE = 1444.35F;
private static float EUR_RATE = 1295.97F;

라는 부분이 쓰여져 있었다.

이부분을 안써서 생긴 에러였다!

 


그런데 여전히 localhost:8090/pro06/clac로 들어가면 백지였다

검사를 해보니 모든게 title안에 들어가 있었다. 그래서 title을 확인해보니

요렇게 </title>이 아닌<title>이 있었다. 수정하자 제대로 화면이 떴다.

 

에러 찾아 삼만리였다. 생각지도 못한 문제때문에 화면이 안나오고 있었다T^T