2017-07-13 2 views
0

Ich möchte eine Klasse für eine HTML componenet <h:li /> wie dieses Set laden:erhalten Ansichtsmodell Variable HTML-Komponente

<h:li class="@load(vm.className)" /> 

aber ich kann es nicht, und ich kann keine ZK componenent verwenden.

Jeder möglicher Vorschlag willkommen, Danke

EDIT

hier ist der Fehler:

org.zkoss.zel.ELException: The identifier [class] is not a valid Java identifier as required by section 1.19 of the EL specification (Identifier ::= Java language identifier). This check can be disabled by setting the system property org.zkoss.zel.impl.parser.SKIP_IDENTIFIER_CHECK to true. 

Antwort

0

Das ist, weil "Klasse" ein Java-Schlüsselwort ist (dh Sie können nicht verwenden es als ein Name). Also verwendet zk "sclass", um das zu umgehen.

dies Also, versuchen Sie: <h:li sclass="@load(vm.className)" />

um zu verstehen, was los ist: Wenn Sie so etwas wie <component property="something" /> in zul schreiben, zk wird irgendwann Anruf component.setProperty(something). Also in Ihrem Fall, auch wenn "Klasse" ein Java-Schlüsselwort wäre, hätte es sich beschwert, dass es keine setClass Methode auf li gibt.

Wenn Sie später Probleme beim Festlegen einer Eigenschaft haben, öffnen Sie einfach die Java-Klasse der Komponente, die Sie erstellen möchten, und prüfen Sie, ob tatsächlich ein Setter für die Eigenschaft vorhanden ist.


bearbeiten nach Feedback von Op:

@KiloBatata Es gibt eine andere Möglichkeit, aber: die xhtml namspace anstelle der nativen ein verwenden. Ich habe es gerade ausprobiert:

<h:li xmlns:h="http://www.w3.org/1999/xhtml" sclass="@load(vm.className)" />

mich

<li id="z_3" class="hello-world"></li>

Mit dem xhtml Namespace gibt anstelle der nativen half, als die native erstellen keine Widget oder Komponenten für die DOM-Elemente.

+0

Vielen Dank für Ihre Antwort, ich habe Ihren Vorschlag ausprobiert und die Klasse wurde nicht angewendet und ich habe überprüft und ich habe eine statische 'name_class' geputtet und es hat funktioniert (Beispiel:' '), gibt es noch eine andere Lösung, danke –

+0

Sorry, dass es nicht geholfen hat. Ich habe [etwas mehr über native namespace] gelesen (https://www.zkoss.org/wiki/ZK_Developer%27s_Reference/UI_Patterns/HTML_Tags/The_native_Namespace), und es scheint, dass Sie native Komponenten nicht über serverseitige Logik aktualisieren können, nachdem Sie sie erstellt haben weil zk keine "Komponente" auf der Serverseite erstellt (und nicht einmal ein Widget auf dem Client). Die einzige Möglichkeit, diese zu aktualisieren, ist mit Javascript. –

+0

@KiloBatata Es gibt jedoch noch eine andere Möglichkeit: [Benutze den xhtml-Namespace anstelle des nativen Namespace] (https://www.zkoss.org/wiki/ZUML_Reference/ZUML/Languages#Mix_two_or_more_languages_in_a_ZUML_document). Ich habe es gerade versucht: '' gibt mir '

  • ' –