2010-11-11 1 views
4

Je voulais juste une réponse claire à une question directe - les résultats de google ont été partout ou n'abordent pas les combos que vous verrez ci-dessous.Dans JSP, que font les attributs path et value dans la balise d'entrée et comment le préfixe de formulaire les affecte-t-il?

Je suis généralement un débutant JSP et ai été en train de visser avec le code suivant.

<form:input id="theId" path="path.copied.directly.fromSomewhereElse" 
    cssClass="contentTextInput" cssStyle="width: 229px" /> 

Quand je mets cela dans ma page JSP et charger mon site, il fonctionne très bien et regarde comme mon CssClass définit. Ensuite, je commence à jouer avec parce que je veux qu'il affiche une valeur par défaut .

<form:input id="theId" path="path.copied.directly.fromSomewhereElse" 
    value="blah" cssClass="contentTextInput" cssStyle="width: 229px" /> 

Soudain, HTTP 500, une org.apache.jasper.JasperException! Donc, je décide de supprimer le chemin tout en laissant dans la valeur. C'est juste l'étape 1 dans quelque chose que je sais fonctionne en raison de l'expérience antérieure. Le code est maintenant:

<form:input id="theId" value="someClass.valueIWantAsDefault" 
    cssClass="contentTextInput" cssStyle="width: 229px" /> 

Cela jette en fait une exception, trop - mais je supprimer le préfixe de forme et works-- la plupart du temps. Vous voyez, les effets de la cssClass sont maintenant partis; il ressemble à une zone de texte d'entrée régulière et non affectée. Voici le code jusqu'à présent.

<input id="theId" value="someClass.valueIWantAsDefault" 
    cssClass="contentTextInput" cssStyle="width: 229px" /> 

Que font exactement ces attributs (et préfixe) pour que ce mélange fonctionne?

Répondre

6

Je suppose que vous avez affaire à une page jsp qui repose sur une bibliothèque de balises JSP personnalisées qui fait partie de Spring Framework. Voici les documents pour le <form:input> tag. value n'est pas un attribut valide pour cette étiquette personnalisée, comme vous pouvez le voir dans le lien que j'ai fourni ci-dessus. Lorsque vous supprimez le form:, vous transformez le tag en un ancien tag HTML <input>, ce qui explique pourquoi votre erreur disparaît à ce stade. C'est aussi pourquoi votre css cesse de fonctionner. cssClass n'est pas l'attribut correct pour le tag HTML <input>. C'est simplement class. Ils l'ont appelé cssClass dans la balise jsp custom tag la plus susceptible d'éviter une collision de niveau inférieur avec la méthode Object.getClass() (longue histoire, il suffit de me croire sur parole).

Questions connexes