2017-05-09 3 views
1

J'ai la classe suivante:Pourquoi mon @JsProperty ne conserve-t-il pas le nom en javascript?

@JsType 
public class Options { 

    @JsProperty 
    public boolean extractUrlsWithoutProtocol; 

    public Options(boolean extractUrlsWithoutProtocol) { 
     this.extractUrlsWithoutProtocol = extractUrlsWithoutProtocol; 
    } 
} 

Maintenant, je passe dans une méthode javascript et quand j'utilise des outils de développement pour inspecter j'obtenir ce nom de propriété est extractUrlsWithoutProtocol_0_g$

De plus si je retire la @JsProperty annotation je reçois pas de modification du code généré ...

Mise à jour: Qu'est-ce que le travail est

public native void setExtractUrlsWithoutProtocol(boolean extractUrlsWIthoutProtocol_) 
/*-{ 
    this.extractUrlsWithoutProtocol = extractUrlsWIthoutProtocol_; 
}-*/; 

Répondre

2

Edit: Je suppose que vous parlez de GWT 2.8. Si autre, ma réponse ne s'applique pas.

Je pense que vous manquez une annotation @JsType sur la classe (pas sûr, mais je pense que le compilateur GWT peut être ignorer types non annotés avec @JsType, même si vous avez @JsProperty). En outre, si votre problème est UNIQUEMENT lors de la compilation en mode production, sachez que vous avez besoin d'un indicateur de compilation spécial - generateJsInteropExports (la valeur par défaut n'est PAS d'honorer les annotations JS Interop).

+0

L'ajout de @JsType et l'activation de -generateJsInteropExports ne font aucune différence. –

+0

a ajouté le @JsType à ma question d'origine –

+0

Et votre classe Options? Pouvez-vous trouver ce nom avec une simple recherche de texte dans votre sortie JS? Je demande parce que le compilateur rejette des choses qui ne correspondent pas à certaines restrictions (et recherchent des instructions [WARN] dans votre sortie). Ce document décrit ces restrictions: https://docs.google.com/document/d/10fmlEYIHcyead_4R1S5wKGs1t2I7Fnp_PaNaa7XTEk0/edit – Andrei