2010-06-22 3 views
1

Je viens de passer à Tomcat 6.0.26 à partir d'un autre moteur Servlet/JSP. Auparavant, les valeurs null s'affichaient en tant que chaîne vide. Cependant, Tomcat affiche les valeurs null comme "nulles".Comment puis-je obtenir Tomcat pour sortir une chaîne vide au lieu de null?

<% String str = null; %> 
The value of str is <%= str %>. 

Ce sorties

The value of str is null. 

Comment puis-je obtenir Tomcat pour remplacer les valeurs NULL avec des chaînes vides/blanc?

Répondre

2

On dirait que vous voulez corriger cela dans votre code car il ne semble pas y avoir d'option dans tomcat pour désactiver ce comportement. (Il y a apparemment dans weblogic si c'est ce que vous utilisiez - voir "printNulls").

Des javadocs Tomcat's JspWriterImpl#print()

public void print(java.lang.String s)
throws java.io.IOException

Imprimer une chaîne. Si l'argument est null, la chaîne "null" est imprimée. Sinon, les caractères de la chaîne sont convertis en octets en fonction du codage de caractères par défaut de la plate-forme, et ces octets sont écrits exactement de la même manière que la méthode write(int).

spécifié par:
print en classe javax.servlet.jsp.JspWriter
Paramètres:
s - La chaîne à imprimer
Lancers:
java.io.IOException - Si une erreur est survenue lors de l'écriture

+0

Merci pour fixer ma mise en forme BalusC :-) – Jubal

3

C'est le comportement par défaut et attendu. Apparemment, le serveur précédent a des paramètres de configuration propriétaires pour cela. Aucun à Tomcat vient à l'esprit. Quoi qu'il en soit, scriptlets est une technique vintage et son utilisation est déconseillée sur une décennie. Il a été remplacé par taglibs (comme JSTL) et Expression Language (EL) en combinaison avec une servlet comme contrôleur.

E.g. dans doGet() de Servlet:

String str = null; 
request.setAttribute("str", str); 
request.getRequestDispatcher("page.jsp").forward(request, response); 

et page.jsp:

The value of str is ${str} 

EL sera par défaut rien d'impression si la valeur est égale à null tandis que scriptlet expression (<%= %>) par impression par défaut quel que soit String#valueOf() retours.

Voir aussi:

Questions connexes