Comment installer-Dorg.Apache.El.analyseur.COERCE TO ZERO=false programmatically
cette question est similaire à:
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.
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.