Вставка атрибута Struts Tiles в функцию JavaScript - PullRequest
0 голосов
/ 17 мая 2010

Я пытаюсь вставить атрибут Struts Tiles в функцию JavaScript. Функция JS вызывается при загрузке, и некоторые страницы JSP должны иметь возможность добавлять дополнительный код к этой функции.

Шаблон выглядит так:

<html>
<head>
<script>
  function onLoad(){
    ...
    <tiles:insert attribute="html.head.onLoad" ignore="true" />
    ...
  }
</script>
</head>
</html>

И сайт JSP, который реализует этот шаблон так:

<html> 
<head> 
<script>
<tiles:put type="string" name="html.head.onLoad">
        document.getElementById("report").style.height = (getWindowHeight() - 200) + "px";
    </tiles:put>
...
</script>
</head>
</html>

К сожалению, атрибут вставляется не в функцию JS, а где-то снаружи в заголовке HTML.

Вы знаете, как я могу достичь своей цели?

1 Ответ

1 голос
/ 08 ноября 2017

Мне удалось это просто вставить атрибут name в код JavaScript между "". В моем случае (например) у меня есть:

Шаблон (то есть: filterTemplate.jsp):

<div><a class="btn" id="btn1"><i class="fa fa-filter"></i></a></div>

<div>...</div>

<div id="<tiles:insertAttribute name='myDiv'/>"/>
<script>
    $('#btn1').click(function({
        $('html, body').anímate({
            scrollTop: $("<tiles:insertAttribute name='myDiv'/>").offset().top
        }, 2000);
    });
</script>

В файле tile.xml:

<definition name="resultTable" template="filterTemplate.jsp">
    <put-attribute name="myDiv" value="" />
</definition>

Расширение определения:

<definition name="resultTableA" extends="resultTable">
    <put-attribute name="myDiv" value="#listDogs" />
</definition>
<definition name="resultTableB" extends="resultTable">
    <put-attribute name="myDiv" value="#listCats" />
</definition>

Наконец, в других jsp:

<div class="panel-body collapse">
    <tiles:insertAttribute name="resultTableA"/>
</div>

Использование Apache тайлов 2.0.6

...