2009-12-28 13 views
1

J'utilise un javaBean dans mon application jsp pour stocker des valeurs de formulaire. C'est ainsi que je mets mes valeurs dans mon haricot. Ce code fait partie de mon form.jspComment faire pour lancer une exception sur mon bean java

try { 
     <jsp:setProperty name="formparam" property="*" /> 
} 
catch (Exception e){ error = true; } 

Je suis parti de la « <% » hors de ne pas briser l'affichage du code sur stackoverflow. Maintenant, je reçois mon exception si par exemple on met du texte dans mon champ d'âge afin que la conversation de type lève une exception.

Maintenant, je voudrais savoir s'il est possible de lancer une exception dans le setter de mon bean et de l'attraper avec le même try-catch-block.

Exemple forme mon haricot: (Je sais que cela ne compile même pas, mais je l'espère vous faire une idée de ce que je veux)

public void setAge(int a) { 
    if (this.validAge(a)) 
     age = a; 
    else 
     throw Exception; 
} 

J'espère que je reçois mon point de. De fait, il est possible d'appeler la fonction validAge() dans mon bean à partir de form.jsp pour valider la valeur, mais si je pouvais lancer une exception directement pour que le formulaire.jsp puisse l'attraper, il serait tellement plus lisse.

Tellement longtemps. mantuko

+0

Et que s'est-il passé lorsque vous avez essayé de le faire? – kdgregory

+1

Ceci est un mauvais design. Vous ne devriez pas écrire du code scriplet comme celui-ci dans une JSP. – duffymo

Répondre

0

1) déclarer l'exception à être jeté 2) "throw new Exception"

public void setAge(int a) throws Exception { 
    if (this.validAge(a)) 
    age =a ; 
    else 
    throw new Exception("...") 
} 
+0

Merde J'ai juste manqué la partie "jette l'exception". THX. Cela fonctionne bien pour moi. Pour clarifier un peu ma situation: Je travaille sur une tâche pour mon cours WebEngineering et je suis juste au début. Donc, je ne peux pas utiliser JavaScript pour la validation parce que je suis sur le point d'apprendre JSP. Nous n'utilisons pas JSLT (peu importe ce que je vais lire plus tard :)) et je sais juste que les taglib existent mais je ne sais pas ce qu'ils font et comment les utiliser pour le moment. La réponse de BalusC est donc au-dessus de mes connaissances. Je suis venu à l'esprit que les scriptlets ne sont probablement pas la solution. Mais jusqu'à présent je n'ai pas d'alternative. Merci à tout le monde. – mantuko

4

il suffit de laisser la méthode lancer et utiliser le JSTL c:catch pour le manipuler.

<c:catch var="error"> 
    <jsp:setProperty name="formparam" property="*" /> 
</c:catch> 

<c:if test="${not empty error}"> 
    <p>Error: ${error}</p> 
</c:if> 

Cela dit, le JSP est le mauvais endroit pour faire les validations. Soumettez plutôt le formulaire à un Servlet, laissez le servlet déléguer un modèle métier/action qui effectue la validation, collectez tous les messages d'erreur dans une sorte de Map dans la portée de la requête à laquelle vous accédez dans EL. Faites en non utilisez des scriptlets dans JSP. JSTL fournit joli everything dont vous avez besoin dans le core, fmt et fonction taglibs.

0

Je préfère les méthodes de validation JavaScript associées à l'événement onblur pour cette zone de texte. Laissez JavaScript gérer cela pour vous, pas Java Beans.