타일즈에서 extends가 이상하게 안될때는..
toolbox.xml 에 있는 노드의 경로들이 제대로 잘 박혀 있는지 확인해보자.
기본 default tool들은 괜찮은데, 보통 커스텀으로 박아넣은것들에서 오타가
날 확률이 많으니 조심하자.
삽펐던 사연은 아래 자세히..
=============================================================================
어제 타일즈 삽 펀 사연..
스프링이 대새인데.. 스트러츠로 그냥 하던대로 프로젝트 빌딩을 하고 있었다.
다 하고 나니 이상하게
tiles-defs.xml 에 설정한것과 다르게 동작을 했다.
빌딩과정..
struts-config.xml 에 타일즈 설정을 했고..
<plug-in className="org.apache.struts.tiles.TilesPlugin">
<set-property property="definitions-config" value="/WEB-INF/tiles-defs.xml, /WEB-INF/tiles-defs-info.xml" />
<set-property property="definitions-parser-validate" value="true" />
<set-property property="moduleAware" value="true" />
</plug-in>
라고 정상적으로 설정을 했고..
벨로시티로 타일즈를 구성한곳에 박아야 하니..
velocity.properties 에도 정상적으로 잘 등록을 했고..
velocimacro.library = VM_global_library.vm
velocimacro.permissions.allow.inline = true
velocimacro.permissions.allow.inline.to.replace.global = false
velocimacro.permissions.allow.inline.local.scope = false
velocimacro.context.localscope = false
resource.loader = webapp
webapp.resource.loader.class = org.apache.velocity.tools.view.servlet.WebappLoader
webapp.resource.loader.path = /WEB-INF/template/
webapp.resource.loader.cache = false
webapp.resource.loader.modificationCheckInterval = 60
input.encoding=UTF-8
output.encoding=UTF-8
default.contentType=text/html;charset=utf-8
directive.foreach.counter.name = velocityCount
directive.foreach.counter.initial.value = 1
web.xml 에도 vm파일을 사용할 수 있도록 정상적으로 등록을 하고..
<servlet>
<servlet-name>velocity</servlet-name>
<servlet-class>
org.apache.velocity.tools.view.servlet.VelocityViewServlet
</servlet-class>
<init-param>
<param-name>org.apache.velocity.toolbox</param-name>
<param-value>/WEB-INF/toolbox.xml</param-value>
</init-param>
<init-param>
<param-name>org.apache.velocity.properties</param-name>
<param-value>/WEB-INF/velocity.properties</param-value>
</init-param>
<load-on-startup>10</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>velocity</servlet-name>
<url-pattern>*.vm</url-pattern>
</servlet-mapping>
toolbox.xml 에도 잘 설정을 한듯했다..
그런데 어쩐지 tiles-defs.xml 과 tiles-defs-info.xml 요렇게 2개로 갈라서
처리하려고 했는데..
tiles-defs.xml
<tiles-definitions>
<!-- 1단 레이어 -->
<definition name="layout_onecolumn.tiles" path="/layout/layout_onecolumn.vm">
<put name="tab" value="/layout/top_tab.vm" />
<put name="bottom" value="/layout/bottom.vm" />
</definition>
<!-- Blank 레이아웃 -->
<definition name="layout_blank.tiles" path="/layout/layout_blank.vm" />
<definition name="blank.tiles" path="/layout/blank2.vm" />
</tiles-definitions>
tiles-defs-info.xml
<tiles-definitions>
<definition name="survey.top.tiles" extends="blank.tiles">
<put name="content" value="/top/topContent.vm" />
</definition>
<definition name="survey.survey.tiles" extends="layout_onecolumn.tiles">
<put name="content" value="/test/topContent.vm" />
</definition>
이렇게 설정해서 blank.tiles를 extends 하려고 했는데.. extends를 하는 놈은
안중에도 없고, tils-defs.xml 에 있는 blank.tiles name을 가진 녀석의
/layout/blank2.vm 파일 내용만 보여지는것이다. extends 한녀석도 같이 박혀야
하는데..
그래서 vm파일을 옮겨도 보고, 바꿔도 보고.. 타일즈 문법이 틀렸는지 확인도 해보며
수십번 삽질하다가..
toolbox.xml 의 어떤 한 노드의 경로에 오타가 있단느것을 발견해서
경로를 제대로 잡아주니, extends 가 안되던 것이 에러가 해결됐다..
<!-- Struts -->
<tool>
<key>tiles</key>
<scope>request</scope>
<class>org.apache.velocity.tools.struts.TilesTool</class>
</tool>
<!-- Custom -->
<tool>
<key>strUtil</key>
<scope>application</scope>
<class>net.coader.util.velocity.StringUtilsTool</class>
</tool>
class의 경로에 오타가 있다거나 틀리면 extends문제가 발생한다.
보통 사용자가 java를 통해 custom tool을 만들때 경로를 집어 넣다가 발생할 수 있는
에러 이다.
이건 뭐 차라리 아예 안되서 에러를 내든지 하면 첨부터 설정을 봤을텐데 말이다..
삽질한 내 시간을 돌려줘 ㅠ_ㅠ
- 내 사수인 종민님 블로그에서 퍼온 것임 -
'개발 이야기 > 유용한 Coding' 카테고리의 다른 글
Java로 쉽게 메일 보내기 메소드 만들기 (0) | 2008.11.17 |
---|---|
Collections.sort 로 쉽게 소트하기 (0) | 2008.11.17 |
ANT FTP 에러 해결하는 방법 (1) | 2008.07.28 |
chat Server (0) | 2008.05.14 |
간단한 ChatClient (0) | 2008.05.14 |