Comment installer-Dorg.Apache.El.analyseur.COERCE TO ZERO=false programmatically

cette question est similaire à:

jsf: integer propriété lié à un inputtext dans l'INTERFACE utilisateur est réglé à zéro sur " soumettre

mais je ne suis pas entièrement satisfait de la solution. Les contextes sont les mêmes: j'ai une forme web qui requiert une valeur entière. Si la boîte de texte est laissée vide, je veux que mon champ entier soit 'null 'mais à la place L'El Parser définit automatiquement mon champ id à'0'.

je peux réparer le problème en définissant un paramètre JVM dans ma VM locale Tomcat:

- Dorg.Apache.El.analyseur.COERCE_TO_ZERO=false

cependant, cela ne fonctionnera pas pour la machine de notre client. Est-il possible de définir/modifier ce paramètre JVM "in-code".

mise à jour: j'ai trouvé que c'est demandé, mais si quelqu'un d'autre a une solution, j'aimerais l'entendre aussi.

https://issues.apache.org/bugzilla/show_bug.cgi?id=48813

mise à Jour 2: je ne peux pas changer la valeur de retour à partir d'un '0' à 'null', car mon application doit traiter " 0 " comme une identification réelle. J'ai donc besoin de savoir à l'exécution si la boîte de texte id a été laissée vide ou non.

24
demandé sur Community 2011-03-07 23:42:51

1 réponses

vous pouvez définir les propriétés du système par programme en utilisant System#setProperty() .

System.setProperty("org.apache.el.parser.COERCE_TO_ZERO", "false");

cependant, vous devez vous assurer que cela a été mis avant JSF/EL jamais être initialisé. Le meilleur endroit serait un ServletContextListener .

public class Config implements ServletContextListener {

    @Override
    public void contextInitialized(ServletContextEvent event) {
        System.setProperty("org.apache.el.parser.COERCE_TO_ZERO", "false");
    }

    @Override
    public void contextDestroyed(ServletContextEvent event) {
        // NOOP
    }

}

enregistrez-le comme <listener> dans web.xml , ou lorsque vous êtes déjà sur Servlet 3.0 (Tomcat 7 et so), avec @WebListener annotation.

43
répondu BalusC 2012-03-14 16:39:49