2016-04-26 9 views
1

Ich möchte das Javascript-ObjektGWT JsInterop: JsType Eigenschaft mit "-" in Namen

{"Ctrl-Space": "autocomplete"} 

zu GWT wickeln. Wenn ich versuche:

@JsType 
public class ExtraKeyType { 
    @JsProperty(name = "Ctrl-Space") 
    public String ctrlSpace = "autocomplete"; 
} 

I

String ExtraKeyType.ctrlSpace 'hat ungültigen Namen' Strg-Leer der Fehler

Ist es möglich, wickeln diese mit JsInterop bekommen?

+0

Haben Sie eine Lösung finden? Ich bin von demselben Problem betroffen ... –

+0

Nein, ich habe keine Lösung gefunden, sorry. – ZehnVon12

Antwort

0

Es ist nicht möglich, aber absichtlich. Es ist durch diese Regex https://github.com/gwtproject/gwt/blob/master/dev/core/src/com/google/gwt/dev/js/JsUtils.java#L496 begrenzt, die gültige JS-Bezeichner erzwingt.

Sie sollten beachten, dass dies illegal {with-dash: "bad"} ist, da Bindestriche für Kennungen https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Grammar_and_types nicht gültig sind. Aber das ist legal {with_underscore: "right"} was in JsInterop korrekt funktioniert. ABER, JS ist knifflig und unterstützt tatsächlich ungültige Bezeichner, die nur in Anführungszeichen gesetzt werden müssen, damit Sie {"mit-demh": "richtig zu"} schreiben können.

So aussehen wie Sie gefragt sind, um JsInterop zu verbessern, um ungültige Bezeichner in Eigenschaften von nativen Typen zu unterstützen. Ich denke, dass dies nicht bereits unterstützt wird, da beispielsweise ein ungültiger Bezeichner nicht mit der Punktnotation verwendet werden kann, so dass der generierte JS-Code für ungültige Bezeichner unterschiedlich sein wird. Aber es sieht wie ein interessantes (fast notwendiges) Feature aus, wenn Sie JSON Java-Typen zuordnen möchten.

Dies ist der nächste Schritt: https://github.com/gwtproject/gwt/issues/new

Verwandte Themen