Как загрузить частичную страницу, используя плитки apache с spring mvc

Я использую плитки apache для spring mvc.

Макет выглядит как:
Введите описание изображения здесь

Плитка.xml-файл :

<!-- Default Layout -->
<definition name="default_layout" template="/jsp/layout/default_layout.jsp">
    <put-attribute name="header" value="/jsp/header_footer/top_bar.jsp" />
    <put-attribute name="menu" value="/jsp/left_menu/menu.jsp" />
    <put-attribute name="body1" value="" />
    <put-attribute name="right_pane" value="/jsp/right_pane/right_pane.jsp" />
    <put-attribute name="footer" value="/jsp/header_footer/footer.jsp" />
</definition>

<definition name="home" extends="default_layout">
    <put-attribute name="body1" value="/jsp/home/home.jsp" />
</definition>

Теперь он работает нормально, за исключением сценария, когда я нажал на меню, то вся страница перезагружается. И я потерял раздел меню, где я щелкнул.

Меню реализовано как

<ul>
 <li></li>
 ........
 ........
 <li></li>
</ul>

Итак, есть ли какой-либо способ загрузить плитки частично, или любая работа вокруг, которую я могу использовать, чтобы исправить это?

2 ответа

  1. в вашем tiles.xmlфайле

    <definition name="templatename"
                template="/WEB-INF/pages/layout.jsp">
        <put-attribute name="header" value="/WEB-INF/pages/includes/header.jsp" />
         <put-attribute name="sidebar" value="WEB-INF/pages/includes/sidebar.jsp" />
        <put-attribute name="body" value="" />
        <put-attribute name="rightsidebar" value="/WEB-INF/pages/includes/rightsidebar.jsp" />
        <put-attribute name="footer" value="/WEB-INF/pages/includes/footer.jsp" />
    </definition>
    

    создайте страницу для верхнего, нижнего колонтитула, боковой панели под правой Директорией, упомянутой вtiles.xml, а также создать имя шаблона layout.jspс тегом

    <tiles:insertAttribute name="header" />
    <tiles:insertAttribute name="sidebar" />
    <tiles:insertAttribute name="rightsidebar" />
    <tiles:insertAttribute name="body" />
    <tiles:insertAttribute name="footer" />
    

    затем вы можете вызвать страницу через spring-MVC controller url-pattern.

    добавьте это в плитки.XML

    <definition name="/dosomething" extends="templatename">
        <put-attribute name="title" value="dosomething" />
        <put-attribute name="body" value="/WEB-INF/pages/login/dosomething.jsp" />
    </definition>
    

    для частичной загрузки тела создайте страницу dosomething.jsp

  2. Единственный способ добиться частичной визуализации в вашем случае-использовать метод загрузки Jquery.

    на боковой панели.jsp в тегах привязки напишите onclick= » test()»,

    > function test() {
    >               $("#Maincontent").load("${pageContext.request.contextPath}/yourcontrollerMapping");
    > 
    >          }
    

    можно использовать div (Maincontent), чтобы указать область, которую требуется загрузить в макет.jsp (поскольку плитки Apache обновят все элементы, включая боковую панель).