2017-12-16 3 views
1

eine Komponente Article Betrachten hinzufügen sagen in einer tml Datei wie folgt verwendet:Gibt es eine Möglichkeit Mixins auf die Verwendung von <body /> innerhalb einer Komponente

<t:article id="id"> 
    <t:contols model="articleControls" /> 
</t:article> 

Die tml der Article Komponente sagen ist wie folgt:

<article class="app-some-wrapper-class"> 
    <h2>${title}</h2> 
    <h3>${subtile}</h3> 
    <body t:mixins="decorator" decorator="shadow" /> <!-- note the use of a mixin here --> 
</article> 

ich brauche die mixin zum <body/> Parameter bewerben, aber diese Implementierung wird eine ApplicationExpection werfen. Was ist der richtige Weg oder alternative Möglichkeit, dies zu tun?

Antwort

0
<body t:type="any" t:mixins="decorator" decorator="shadow" /> 

upd: siehe t5 doc über jede: https://tapestry.apache.org/5.4/apidocs/org/apache/tapestry5/corelib/components/Any.html

+0

Bitte erläutern Sie Ihre Antwort, Code nur Antworten könnte das Problem beheben, aber nicht erklären, das Problem/Lösung warum würde diese Arbeit? –

+0

Ja, eine Erklärung wäre hilfreich. Warum fügt man 't: type =" any "hinzu? Ich werde es auch in der Zwischenzeit testen. – vader

+0

Vielen Dank für dieses Code-Snippet, das möglicherweise eine begrenzte kurzfristige Hilfe bietet. Eine angemessene Erklärung [würde erheblich verbessern] (// meta.stackexchange.com/q/114762) ist ihr langfristiger Wert, indem sie zeigt * warum * das ist eine gute Lösung für das Problem, und würde es für zukünftige Leser mit mehr nützlich machen andere, ähnliche Fragen. Bitte [bearbeiten] Sie Ihre Antwort, um einige Erklärungen hinzuzufügen, einschließlich der Annahmen, die Sie getroffen haben. –

0

xl0e Antwort funktioniert, weil Sie nur eine mixin auf einem Teppich compoent anwenden können (durch Tags, die mit t :) beginnen ist einfach ein HTML-Tag, keine Tapestry-Komponente. Um Ihren Mixin darauf anzuwenden, konvertieren Sie ihn in eine Tapisserie-Komponente, indem Sie das Attribut t: any hinzufügen.

Es könnte klarer sein, wenn der Code als <t:any element="body" t:mixins="decorator" >...</t:any> geschrieben wurde

Verwandte Themen