Dans mako, vous pouvez utiliser la fonction de rendu définie comme une pseudo balise html. (Utilisez Exemple de liste déroulante Bootstrap) Plus précisément, le code suivant est rendu en html.
<!-- drop down widget -->
<%namespace file="./widget.html" name="w"/>
<%w:dropdown name="DropDown" id="dropdownMenu1">
<%w:menu id="first" href="#">Action</%w:menu>
<%w:menu href="#">Another Action</%w:menu>
<%w:menu href="#">Something else here</%w:menu>
<li role="presentation" class="divider"></li>
<%w:menu href="#">Separated link</%w:menu>
</%w:dropdown>
Ce code devient html comme ci-dessous (supprimez les lignes vides).
<div class="dropdown">
<button class="btn dropdown-toggle" type="button" id=dropdownMenu1 data-toggle="dropdown">
DropDown
<span class="caret"></span>
</button>
<ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu1">
<li role="presentation"><a id=first role="menuitem" tabindex="-1" href="#">Action</a></li>
<li role="presentation"><a role="menuitem" tabindex="-1" href="#">Another Action</a></li>
<li role="presentation"><a role="menuitem" tabindex="-1" href="#">Something else here</a></li>
<li role="presentation" class="divider"></li>
<li role="presentation"><a role="menuitem" tabindex="-1" href="#">Separated link</a></li>
</ul>
</div>
Détails ci-dessous
Lorsque le formulaire de fonction de rendu suivant est défini.
## helpers.html
<%def form="(action, method)">
<div class="form">
<form action="${action}" method="${method}">
</form>
</div>
</%def>
Il y a deux façons de l'appeler. Le premier est appelé au format $ {foo} de la même manière que l'expansion de variables.
<%namespace file="./helpers.html" name="h"/>
## form
${h.form(action="#", method="POST")}
Vous pouvez également écrire comme suit. Ceci est la deuxième forme.
<%namespace file="./helpers.html" name="h"/>
## form
<%h:form action="#" method="POST"></%h:form>
Il peut être appelé dans un format de type tag.
L'avantage de pouvoir l'appeler dans un format semblable à une balise est que vous pouvez incorporer une valeur dans le bloc de code.
##Il peut s'écrire comme suit.
<%h:form action="#" method="POST">
<div class="field has-feedback">
<label>name:<input type="text" name="name"/></label>
</div>
</%h:form>
Ensuite, vous pouvez faire en sorte que la partie extérieure soit enveloppée en premier et décider de l'élément intérieur au moment de l'appel. Utilisez caller.body () pour ce faire. Si vous modifiez le code comme ci-dessous, l'exemple ci-dessus fonctionnera.
<%def form="(action, method)">
<div class="form">
<form action="${action}" method="${method}">
${caller.body()}
</form>
</div>
</%def>
Recommended Posts