뿌직직
121
2019-11-07 09:11:18 작성 2019-11-07 09:13:50 수정됨
4
189

tiles definition 관련 문의드립니다.


spring 4.3에 tiles3.0.5를 적용시키고 있습니다.


tiles3을 구글링해서 잘 붙였는데,


definition name의 인식에 문제가 있는듯 합니다.


controller에서 return시키는 jsp를 그대로 명시하면 tiles가 제대로 동작하는데,


**이나 * 같은 asterisk를 적용하면 전혀 인식하지 않는 것 같습니다.



가령, 컨트롤러에서 



@RequestMapping("/test.do")
public String idx() throws Exception {
    	
  return "abcd/efg/hi/jkl";
}

요런형태로 리턴할 경우



<definition name="default" template="/WEB-INF/jsp/tiles/template.jsp">
        <put-attribute name="title" value="title" />
        <put-attribute name="header" value="/WEB-INF/jsp/tiles/header.jsp" />
        <put-attribute name="body" value="" />
        <put-attribute name="footer" value="/WEB-INF/jsp/tiles/footer.jsp" />
    </definition>
 
    <definition name="abcd/efg/hi/jkl" extends="default">
<put-attribute name="body" value="/WEB-INF/jsp/abcd/efg/hi/jkl.jsp" />
</definition> </tiles-definitions>

이런식으로 명시를 해놓으면 잘 작동하는데,

아래와 같이 asterisk(*)를 넣어 기술하면 인식을 못합니다.


<tiles-definitions>
 
    <!-- 메뉴 표시 -->
    <definition name="default" template="/WEB-INF/jsp/tiles/template.jsp">
        <put-attribute name="title" value="" />
        <put-attribute name="header" value="/WEB-INF/jsp/tiles/header.jsp" />
        <put-attribute name="body" value="" />
        <put-attribute name="footer" value="/WEB-INF/jsp/tiles/footer.jsp" />
    </definition>
 
    <definition name="abcd/*" extends="default">
        <put-attribute name="body" value="/WEB-INF/jsp/abcd/{1}.jsp" />
    </definition>
 
    <definition name="abcd/**" extends="default">
        <put-attribute name="body" value="/WEB-INF/jsp/abcd/{1}.jsp" />
    </definition>
 
    <definition name="abcd/**/*" extends="default">
        <put-attribute name="body" value="/WEB-INF/jsp/abcd/{1}/{2}.jsp" />
    </definition>
    
</tiles-definitions>



definition 설정에 문제가 있는것 같아 문의를 드립니다. 

도움을 부탁드립니다.

0
0
  • 답변 4

  • 어쩌다
    5k
    2019-11-07 09:33:09
    <definition name="abcd/*/*/*" extends="default">
    "abcd/efg/hi/jkl"
    0
  • 뿌직직
    121
    2019-11-07 09:36:52

    어쩌다님,

    제 경우는 일단 *만 들어가면 무조건 인식을 못하네요.

    말씀하신 경우도 적용이 되지 않았구요...


    오직 "abcd/efg/hi/jkl" 처럼 직접 명시를 한것만 인식을 하는 상황입니다.

    0
  • 어쩌다
    5k
    2019-11-07 09:52:03

    메이븐 사용중이신가요..?

    jstl 라이브러리 추가 되었나요.?

    0
  • 뿌직직
    121
    2019-11-07 09:55:16 작성 2019-11-07 09:56:06 수정됨

    자문자답이 된듯 합니다.


    servlet xml 파일의 tilesConfigurer 부분에 아래와 같이 추가되어있는 부분이 문제가 된듯 합니다.


    		<property name="completeAutoload">
    			<value>true</value>
    		</property>
    


    Wildcard 지원 관련해서 있어서 넣었는데 위부분이 문제가 되었던 것 같습니다.

    위 부분을 삭제하고(보통 구글링해서 나오는 자료에는 없던 코드입니다)

    abcd/** 로 definition name을 설정하니 잘 적용되었습니다.



    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.