2010-04-19 27 views
2

Tous, Je travaille sur une application Web Java que nous déployons sur le serveur de l'application web Resin. J'ai fait de l'analyse XML pour une nouvelle partie de l'application, et j'ai réalisé que notre application utilisait Resin classes pour faire l'analyse. Je voulais sortir de cela et utiliser quelque chose de plus standard pour un certain nombre de raisons, donc je définir ces propriétés du système dans mon fichier de configuration de résine (et a ajouté le pot de xerces à mon classpath):Erreur de compilation JSP lors de la modification de l'analyseur XML pour Xerces

<system-property javax.xml.parsers.DocumentBuilderFactory="org.apache.xerces.jaxp.DocumentBuilderFactoryImpl"/> 

<system-property javax.xml.parsers.SAXParserFactory="org.apache.xerces.jaxp.SAXParserFactoryImpl"/> 

Et maintenant Je reçois des erreurs de compilation JSP sur plusieurs pages (je suppose que l'analyseur intégré de Resin était plus clément). L'erreur se lit comme suit:

org.xml.sax.SAXParseException: The value of attribute "title" associated with an element type "display:column" must not contain the '<' character. 

Et, le « display 'colonne » étiquette sur certaines pages ne contient en effet balisage dans l'attribut « title ». Voici un exemple:

<display:column scope='col' class=" appealColorBG selectAllWidth" 
    title="<span class='centerThis'><label for='selectAll'>Select All</label><br /> 
      <input type='checkbox' name='selectAll' 
      id='selectAll' 
      onClick='selectAllCheckboxes();'/></span> " > 

C'est un code JSP laid, je sais, mais il est aussi le code qui est déjà en production, donc je suis hésité à changer.

Est-ce que quelqu'un sait d'une façon que je peux définir xerces afin qu'il permettra à la JSP de compiler tel quel?

+1

Si les paramètres par défaut de la résine fonctionnent et que les paramètres modifiés ne fonctionnent pas, pourquoi les changer? – skaffman

+0

La résine par défaut fonctionne pour la compilation JSP, mais j'essaie de résoudre un autre problème d'analyse, et je voudrais utiliser Xerces pour cela plutôt que de construire les classes de résine, qui ne sont pas standard. Le problème de la compilation JSP m'a pris au dépourvu. Si je ne trouve pas de solution qui permettra aux JSP de compiler, je devrai revenir en arrière, comme vous le dites. – elduff

Répondre

1

C'est certainement un code JSP moche.

Si vous utilisez un analyseur XML, vous avez un problème. Les valeurs d'attribut dans XML valide ne peuvent pas contenir le caractère '<', comme Xerces vous le dit.

Il est douteux que vous puissiez dire à Xerces d'accepter cela, mais la fixation du XML serait une meilleure idée que de parler d'un analyseur XML pour accepter le code XML incorrect de toute façon. Vous voudrez probablement revenir à l'utilisation des classes Resin jusqu'à ce que vous puissiez utiliser XML correctement Xerces ou configurer Resin pour qu'il n'utilise pas d'analyseur XML dans le cadre de sa compilation JSP (voir les commentaires).

+0

Oui, Resin semble exécuter les JSP à travers l'analyseur avant de compiler - peut-être que c'est standard, mais je ne m'en suis pas rendu compte. Comme vous le dites, ce n'est peut-être pas possible, mais c'est ce que je voulais demander :) Ce n'est pas une option pour moi de changer les JSPs, car il s'agit d'une base de code existante assez grande, donc je devrais vivre avec les classes Resin. – elduff

+0

Je viens de fouiller un peu dans Resin docs, et je suppose que vous pouvez dire à Resin de ne pas traiter JSP comme XML. Jetez un oeil à http://www.caucho.com/resin-3.0/config/webapp.xtp#jsp pour des conseils à ce sujet. Il semble que ce devrait être le défaut par défaut. –

+0

Merci pour le lien vers les docs de résine avec la balise jsp config - J'ai joué avec ceux-ci un peu, mais je reçois toujours cette erreur de compilation JSP. On dirait que je vais devoir retourner à l'analyseur de résine pour l'instant. Merci pour l'aide! – elduff