2016-06-14 1 views
0

J'ai utilisé la suite, dans un fichier JSP pour récupérer le paramètre URL. Ce fichier JSP représente une page web avec un formulaire que je valide avec le validateur Struts ."request.getParameter" return "-1" pour les paramètres d'URL inexistants

<% String tempVal= (String)request.getParameter("parm");%> 

Lorsque le formulaire charge initialement, la valeur du paramètre tempVal est null s'il n'y a aucun paramètre d'URL avec le nom parm.
Ensuite, je soumets le formulaire avec certaines données invalides dans le formulaire, et le venir à la même page (Après avoir frappé la méthode Validate dans la classe ActionForm) avec des messages d'erreur de validation.
Mais cette fois, la valeur du paramètre tempVal est -1. Voici ma méthode Validate dans la classe ActionForm.

@Override 
public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) 
{ 
    ActionErrors errors = null; 
    errors = super.validate(mapping, request); 
    String temp2 = request.getParameter("param3"); 
    if(temp2 == null){ 
     errors.add("some Error"); 
    } 
    return errors; 
} 

Une raison de ce comportement? Merci d'avance

Répondre

0

Votre paramètre d'URL doit être au format de chaîne si vous essayez de recevoir une demande dans un autre formulaire.

Mais si votre paramètre d'URL ne sont pas au format de chaîne alors je recommande d'utiliser getAttribute

Ici même cela se produise, parce que vous essayez de getParameter de l'objet et dix convertir en chaîne qui vous donne -1.

Première page

//first page: first.jsp 
    <% request.setAttribute("PAGE", "param");%> 
    <jsp:forward page="/second.jsp"/> 

et second.jsp:

<%=request.getAttribute("PAGE")%> 

Il est essentiel de savoir que les attributs ne sont pas des paramètres. Le type de retour pour les attributs est un objet, tandis que le type de retour pour un paramètre est une chaîne. Lorsque vous appelez la méthode getAttribute (String name), gardez à l'esprit que les attributs doivent être castés.

De plus, il n'y a pas d'attributs spécifiques aux servlets, et il n'y a pas de paramètres de session.

Espérons que cela puisse vous aider.

+0

Casting en "String" n'est pas nécessaire, je comprends.But ** String tempVal = request.getParameter ("parm"); ** est le moyen d'obtenir le paramètre d'URL.Pourtant je ne comprends pas la raison de ce comportement . –