In mako können Sie die definierte Renderfunktion wie ein Pseudo-HTML-Tag verwenden. (Verwenden Sie Bootstrap-Dropdown-Beispiel) Insbesondere wird der folgende Code in HTML gerendert.
<!-- 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>
Dieser Code wird wie unten beschrieben in HTML (Leerzeilen entfernen).
<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>
Details unten
Wenn das folgende Renderfunktionsformular definiert ist.
## helpers.html
<%def form="(action, method)">
<div class="form">
<form action="${action}" method="${method}">
</form>
</div>
</%def>
Es gibt zwei Möglichkeiten, es zu nennen. Die erste wird im Format $ {foo} wie die Variablenerweiterung aufgerufen.
<%namespace file="./helpers.html" name="h"/>
## form
${h.form(action="#", method="POST")}
Sie können auch wie folgt schreiben. Dies ist die zweite Form.
<%namespace file="./helpers.html" name="h"/>
## form
<%h:form action="#" method="POST"></%h:form>
Es kann in einem tagartigen Format aufgerufen werden.
Das Gute daran, es in einem tagartigen Format aufrufen zu können, ist, dass Sie einen Wert in den Codeblock einbetten können.
##Es kann wie folgt geschrieben werden.
<%h:form action="#" method="POST">
<div class="field has-feedback">
<label>name:<input type="text" name="name"/></label>
</div>
</%h:form>
Anschließend können Sie den äußeren Teil zuerst umbrechen und das innere Element zum Zeitpunkt des Aufrufs festlegen. Verwenden Sie dazu caller.body (). Wenn Sie den Code wie folgt ändern, funktioniert das obige Beispiel.
<%def form="(action, method)">
<div class="form">
<form action="${action}" method="${method}">
${caller.body()}
</form>
</div>
</%def>
Recommended Posts