2010-05-17 12 views
0

J'essaie d'insérer un attribut Struts Tiles dans une fonction JavaScript. La fonction JS est appelée au chargement et certaines pages JSP doivent être autorisées à ajouter du code supplémentaire à cette fonction.Insertion de l'attribut Struts Tiles dans une fonction JavaScript

Le modèle ressemble à ceci:

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

Et le site JSP qui implémente ce modèle comme celui-ci:

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

Malheureusement, l'attribut est inséré pas dans la fonction JS, mais quelque part en dehors dans la tête HTML.

Connaissez-vous un moyen d'atteindre mon objectif?

Répondre

1

J'ai géré cela simplement en insérant l'attribut nom dans le code JavaScript entre "". Dans mon cas (par exemple), j'ai:

Modèle (ex: 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> 

Dans le tiles.xml:

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

L'extension de la définition:

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

Enfin, dans d'autres jsp:

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

Utilisation de pavés apache 2.0.6