newlecture: spring MVC (2) : Tiles

26000 ワード

https://www.youtube.com/watch?v=F8-elAVTSzE
いつもNewrek先生に感謝しています!
に質問いずれの修正も修正しなければならない.


このように集中しなければならない.

jspにはその機能がありますが...これも繰り返しをもたらした.

この場合はTilesを使用します.

Tiles


notice/listリクエストは、典型的なjspリクエストである.notice.listリクエストはtiles組立リクエストです.

ちなみにティルスは定年退職しました
Tiles初期設定
  • https://tiles.apache.org/framework/tutorial/basic/pages.html
  • <tiles-definitions>
      <definition name="notice.list" template="/WEB-INF/view/customer/inc/layout.jsp">
        <put-attribute name="title" value="Tiles tutorial homepage" />
        <put-attribute name="header" value="/WEB-INF/view/inc/header.jsp" />
        <put-attribute name="visual" value="/WEB-INF/view/customer/inc/visual.jsp" />
        <put-attribute name="aside" value="/WEB-INF/view/customer/inc/aside.jsp" />
        <put-attribute name="body" value="/WEB-INF/view/customer/notice/list.jsp" />
        <put-attribute name="footer" value="/WEB-INF/view/inc/footer.jsp" />
      </definition>
      <definition name="notice.detail" template="/WEB-INF/view/customer/inc/layout.jsp">
        <put-attribute name="title" value="Tiles tutorial homepage" />
        <put-attribute name="header" value="/WEB-INF/view/inc/header.jsp" />
        <put-attribute name="visual" value="/WEB-INF/view/customer/inc/visual.jsp" />
        <put-attribute name="aside" value="/WEB-INF/view/customer/inc/aside.jsp" />
        <put-attribute name="body" value="/WEB-INF/view/customer/notice/detail.jsp" />
        <put-attribute name="footer" value="/WEB-INF/view/inc/footer.jsp" />
      </definition>
    </tiles-definitions>
    私の場合は上記の設定が出ています
    どのページもそうはいかない...尊敬の準備をする

    降格
    pomファイル>Dependenciesタブ>add>org.apache tiles-jsp
    <%@ taglib prefix="tiles" uri="http://tiles.apache.org/tags-tiles"%>
    layout.jspに上記の文を追加する
    <tiles:insertAttribute name="header" />
    各レイアウトの位置を次のように設定します.
    <tiles:getAsString name="title" />
    共通に配置する文字列は次のように設定されます.
        <bean
    		class="org.springframework.web.servlet.view.UrlBasedViewResolver">
    		<property name="viewClass"
    			value="org.springframework.web.servlet.view.tiles3.TilesView" />
    		<property name="order" value="1" />
    	</bean>
    
    	<bean
    		class="org.springframework.web.servlet.view.tiles3.TilesConfigurer">
    		<property name="definitions" value="/WEB-INF/tiles.xml" />
    	</bean>
    
        <bean name="" class="org.springframework.web.servlet.view.InternalResourceViewResolver" >
        	<property name="prefix" value="/WEB-INF/view/" />
        	<property name="suffix" value=".jsp" />
        	<property name="order" value="2"></property>
        </bean>
    上記の設定をdisaptcher-servlet.xmlに追加します.
    jstl libがない場合、500エラーが発生します.
    mavenから追加(javax.servlet.jstl)

    出来上がったら上に浮かびます.
      <definition name="notice.*" template="/WEB-INF/view/customer/inc/layout.jsp">
        <put-attribute name="title" value="공지사항" />
        <put-attribute name="header" value="/WEB-INF/view/inc/header.jsp" />
        <put-attribute name="visual" value="/WEB-INF/view/customer/inc/visual.jsp" />
        <put-attribute name="aside" value="/WEB-INF/view/customer/inc/aside.jsp" />
        <put-attribute name="body" value="/WEB-INF/view/customer/notice/{1}.jsp" />
        <put-attribute name="footer" value="/WEB-INF/view/inc/footer.jsp" />
      </definition>
    前述したように、設定を変更するとlistやdetailなどのリクエストに応答できます.notice.*.*.*このようなレベルは、第3段階の要求に低下する.~/notice/{1}/{2}/{3}はこのように設定すればいいです
    rootのindexページの設定
      <definition name="*" template="/WEB-INF/view/inc/layout.jsp">
        <put-attribute name="title" value="공지사항목록" />
        <put-attribute name="header" value="/WEB-INF/view/inc/header.jsp" />
        <put-attribute name="body" value="/WEB-INF/view/{1}.jsp" />
        <put-attribute name="footer" value="/WEB-INF/view/inc/footer.jsp" />
      </definition>
    上記のように設定した場合*要求がnotice.*に達することができる要求
    順番を変えたら...無限ループに陥る可能性があります.*->root.*に変換
    IndexControllerもreturn "root.*";に変更されました