Apache Velocity 변수가 null 일때 공백으로 출력되게 하기
Java 2011. 9. 20. 11:46
템플릿과 모델 데이터를 결합해서 파싱할때 모델에 해당 변수가 없을때 ${ XXX } 같은게 결과로 변환되어 출력된다.
찾아보니까 $!{ XXX } 요렇게 느낌표를 붙여주면 공백으로 변환된다고 하던데 일일히 바꾸기가 귀찮았다.
일일히 바꾸기 귀찮을땐 InvalidReferenceEventHandler 를 한번 써보자
InvalidReferenceEventHandler 인터페이스를 구현한 클래스를 하나 맨들고 밸로시티 Property 로 그것을 사용하도록 설정해 주면 된다.
먼저 InvalidReferenceEventHandler 인터페이스를 구현한 클래스이다.
invalidGetMethod 메소드에서 리턴을 "" 요걸로 공백을 리턴해 주면 된다.
이제 클래스를 맨들었으니 요걸 밸로시티에서 쓰도록 설정해 보자.
velocityProperties 에 기존에 설정된 프로퍼티에 아래와 같이 추가하면 된다.
이제 해보면 아마 잘될꺼임.
찾아보니까 $!{ XXX } 요렇게 느낌표를 붙여주면 공백으로 변환된다고 하던데 일일히 바꾸기가 귀찮았다.
일일히 바꾸기 귀찮을땐 InvalidReferenceEventHandler 를 한번 써보자
InvalidReferenceEventHandler 인터페이스를 구현한 클래스를 하나 맨들고 밸로시티 Property 로 그것을 사용하도록 설정해 주면 된다.
먼저 InvalidReferenceEventHandler 인터페이스를 구현한 클래스이다.
package com.tistory.stove99; import org.apache.velocity.app.event.InvalidReferenceEventHandler; import org.apache.velocity.context.Context; import org.apache.velocity.util.introspection.Info; public class InvalidReferenceHandler implements InvalidReferenceEventHandler{ @Override public Object invalidGetMethod(Context context, String reference, Object object, String property, Info info) { return ""; } @Override public boolean invalidSetMethod(Context context, String leftreference, String rightreference, Info info) { return false; } @Override public Object invalidMethod(Context context, String reference, Object object, String method, Info info) { return null; } }
invalidGetMethod 메소드에서 리턴을 "" 요걸로 공백을 리턴해 주면 된다.
이제 클래스를 맨들었으니 요걸 밸로시티에서 쓰도록 설정해 보자.
velocityProperties 에 기존에 설정된 프로퍼티에 아래와 같이 추가하면 된다.
eventhandler.invalidreferences.class = com.tistory.stove99.InvalidReferenceHandler
이제 해보면 아마 잘될꺼임.