IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Struts 2 Java Discussion :

[Struts 2][INPUT result] URL incohérant


Sujet :

Struts 2 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 2
    Par défaut [Struts 2][INPUT result] URL incohérant
    Bonjour,

    Ceci est mon premier "post". J'espère respecter les directives. Ne vous gênez pas pour me dire si je n'ai pas fait les choses selon les règles de l'art.

    Je débute en Struts 2 et j'ai fait plusieurs tutoriels. J'essaye de bâtir une petite application web qui intègre ce que j'ai appris. Cette application est multilingue. J'utilise donc un appel à la méthode input() dès que j'arrive sur une page pour que l'action puisse afficher le texte dans la bonne langue.

    Lorsque je démarre mon application, index.jsp est chargé et l'appel à l'action LogInput est correctement exécuté. Le résultat est valide, le paramétrage de request_locale est correctement lu et je vois le texte contenu dans mon fichier LoginAction_fr.properties.

    À ce moment là, le URL visible dans le navigateur est :
    Lorsque je clique sur mon bouton "Valider" sans remplir les champs "username" et "password", je m'attends à un retour à la même page avec un message d'erreur généré par addFieldError() provenant de la méthode validate();

    Ô! surprise, je me retrouve avec une page blanche, sans les images normalement contenues dans login.jsp et seulement un lien d'image cassé, mes deux champs, mon bouton de validation et le message d'erreur généré par addFieldError(). le fait de voir mon texte localisé et mon message d'erreur me permet de présumer que mon action s'est bien exécutée.

    À ce moment là, le URL visible dans le navigateur est :
    Je clique à nouveau sur le bouton valider en m'attendant au même résultat mais ce coup là, ça marche.
    Le URL deviens :
    Pourquoi ça ne marche pas la première fois mais que ça marche les fois suivantes ? J'oublie de déclarer un "namespace" ?
    Je continue à chercher...

    Voici tout le code pertinent pour répondre à ma question.
    J'utilise Tomcat 7.0 et le jdk1.6.0_21

    Je remercie ceux ou celles qui vont me dépanner.


    Contenu de webxml :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    id="WebApp_ID" version="3.0">
     
      <display-name>3ZWeb</display-name>
     
      <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>  
     
        <filter>
            <filter-name>struts2</filter-name>
            <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
        </filter>
     
         <filter-mapping>
            <filter-name>struts2</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
    </web-app>

    Contenu de struts.xml
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
        "http://struts.apache.org/dtds/struts-2.0.dtd">
     
    <struts>
     
    	<constant name="struts.devMode" value="true" />
     
    	<package name="3ZWeb" extends="struts-default">
     
    		<action name="index">
    			<result>/index.jsp</result>
    		</action>
     
    		<action name="LogInput" class="org.fgr.threezweb.login.action.LoginAction" method="input">
    			<result name="input">/login.jsp</result>
    		</action>
     
    		<action name="Logon" class="org.fgr.threezweb.login.action.LoginAction" method="execute">
    			<result name="success">/dummy.jsp</result>
    			<result name="input">/login.jsp</result>
    		</action>
    	</package>
     
    </struts>

    Contenu de index.jsp
    Code jsp : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
        pageEncoding="ISO-8859-1"%>
    <%@ taglib prefix="s" uri="/struts-tags" %>
    <s:action namespace="/3ZWeb" name="LogInput" executeResult="true"></s:action>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    	pageEncoding="ISO-8859-1"%>
    <%@ taglib prefix="s" uri="/struts-tags"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    	<head>
    		<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    		<title>3Z Brothers</title>
    		<link href="css/global.css" rel="stylesheet" type="text/css" />
    	</head>
    	<body>
    		<div id="mainShell" align="center">
    			<div id="headerBGContainer">
    				<div id="headerContainer">
    					<div id="logoContainer">
    						<a href="/3ZWeb"><img class="pngfix" src="images/gateLogo.png" height="33" width="217" border="0"
    						alt="EVE Online | EVE Gate" /></a>
    					</div>
    				</div>
    			</div>
    			<div id="logOn">
    				<s:form method="post" action="Logon">
    					<s:textfield key="logInfo.username" />
    					<s:password key="logInfo.password" />
    					<s:submit key="loginSubmit" />
    				</s:form>
    			</div>
    		</div>
    	</body>
    </html>
    Contenu de LoginAction.java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    package org.fgr.threezweb.login.action;
    import java.util.Map;
     
    import org.fgr.threezweb.database.UserService;
    import org.fgr.threezweb.login.model.LoginModel;
     
    import com.opensymphony.xwork2.ActionContext;
    import com.opensymphony.xwork2.ActionSupport;
     
     
    public class LoginAction extends ActionSupport{
     
    	private LoginModel logInfo;
     
    	public String execute() throws Exception {
    		try {
    			UserService us = new UserService();
    			if(us.ValidateUser(logInfo.getUsername(), logInfo.getPassword())) {
    					Map<String, Object> session = ActionContext.getContext().getSession();
    					session.put("logged-in","true");
    					return SUCCESS;
    			} else {
    				return INPUT;
    			}
    		} catch(Exception e) {
    			return ERROR;
    		}
    	}
     
    	public void validate() {
    		if(logInfo.getUsername().length() == 0) {
    			addFieldError("logInfo.username", "baaaad");
    		}
    	}
     
    	public void setLogInfo(LoginModel logInfo) {
    		this.logInfo = logInfo;
    	}
     
    	public LoginModel getLogInfo() {
    		return logInfo;
    	}
    }

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 2
    Par défaut J'ai trouvé la solution
    Je n'avais simplement pas déclaré le namespace dans ma balise !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <s:form action="Login" namespace="/">
    <s:textfield key="logInfo.username" />
    <s:password key="logInfo.password" />
    <s:submit key="loginSubmit" />
    </s:form>

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Input et url avec.inc
    Par stefane26 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 29/09/2013, 11h07
  2. Action Struts sans afficher l'url appelante
    Par michaeljeru dans le forum Struts 1
    Réponses: 0
    Dernier message: 03/11/2011, 15h15
  3. Input et URL ?!
    Par Fawn_noOb_wxPython dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 28/10/2010, 13h05
  4. Input vers URL !
    Par yourlord dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 05/12/2005, 16h33
  5. [struts][debutant]input checkbox vs html checkbox
    Par venegan dans le forum Struts 1
    Réponses: 2
    Dernier message: 19/08/2005, 16h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo