Мозаики Struts 1 - вложенная проблема мозаик

Я использую мозаики Struts 1 успешно, однако я столкнулся с проблемой при попытке вложить мозаики.

У меня в настоящее время есть расположение как так:

Я хочу иметь другой шаблон как это для использования на довольно многих пользовательских страницах:

Таким образом, я хочу расширить первое расположение для пользовательского расположения. В определении мозаик я использую:


    ....


    
    ....


    
    ....

В user/layout.jsp Я пытаюсь показать мозаику обычно, с помощью .

И проблема The requested resource (/WEB-INF/jsps/user/userContent) is not available

5
задан Glorfindel 21 July 2019 в 20:24
поделиться

3 ответа

Я нашел здесь некоторую информацию из

Это решение сработало для меня.

В этом случае обычно у вас есть создать новое определение, расширяющее из существующего заполните атрибут в правильном шаблоне и назначить новое определение как атрибут основного шаблона.

Другими словами:

<definition name="product.nav" template="/productNavLayout.jsp">    
    <put-attribute name="productPathNav" value="/productPathNav.jsp" />    
    <put-attribute name="productNav" value="/productNav.jsp" />  
</definition> 

<definition name="product.nav.extended" extends="product.nav">    
    <put-attribute name="productContent" value="product.grid" />  
</definition> 

<definition name="page.products" extends="layout">
    <put-attribute name="content" value="product.nav.extended" />  
</definition>
0
ответ дан 15 December 2019 в 06:29
поделиться

Прошло много времени с тех пор, как я использовал Struts Tiles, но не следует ли вам использовать вместо ?

То есть что-то вроде:

<tiles:insert attribute="userContent" flush="false"/>
0
ответ дан 15 December 2019 в 06:29
поделиться

Как видно из вашего вопроса, вы используете разные имена для атрибута содержимого. Это контент для user.layout и userContent для user.page.

Можете ли вы попробовать использовать одно и то же имя для этого атрибута либо content , либо userContent ?

Надеюсь, это поможет.

Обновление. Это быстрые хакерские решения. Вы можете использовать атрибут ignore, для которого установлено значение true для плиток: получить операцию. Это будет происходить тихо, если не определен userContent.

Но я думаю, что что-то не так с определениями тайлов.

Сообщение об ошибке предполагает, что вы пытаетесь использовать тайл, который не определен. Я составил пример, в котором .user.layout является расширением .basic.layout . Разница между ними заключается в части тела.

<definition name=".basic.layout" path="/WEB-INF/jsps/basicLayout.jsp">
   <put name="header" value="/WEB-INF/jsps/header.jsp"/>
   <put name="content" value="/WEB-INF/jsps/basicLayout.jsp"/>
   <put name="footer" value="/WEB-INF/jsps/footer.jsp"/>
</definition> 

<!-- extending content part of basic layout -->
<definition name=".user.content" value="/WEB-INF/jsps/user/layout.jsp">
   <put name="userContent" value="/WEB-INF/jsps/user/page.jsp"/>
</definition>

<!-- defining new layout -->
<definition name=".user.layout" extends=".basic.layout">
  <put name="content" value=".user.content"/>
</defnition>

<definition name=".user.page" extends=".user.layout">
  <put name="userContent" value="/WEB-INF/jsps/page.jsp"/>
</definition>

<definition name=".user.info" extends=".user.layout">
  <put name="userContent" value="/WEB-INF/jsps/userInfo.jsp"/>
</definition>

<definition name=".other.page" extends=".basic.layout">
  <put name="content" value="/WEB-INF/jsps/other.jsp"/>
</definition>
0
ответ дан 15 December 2019 в 06:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: