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 :

problème validation


Sujet :

Struts 2 Java

  1. #1
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 125
    Par défaut problème validation
    Bonjour,

    Je suis en train de faire un validation de données en Struts2, et je rencontre une exception, que je n'arrive pas à résoudre :
    - J'ai bien rajouté le fichier : SaveTModelAction-validation.xml qui correspond à la validation de mon action SaveTModelAction.java
    (dans le même package que l'action)
    - J'ai rajouté l'option validate="true" dans le form de ma jsp...

    Quand je valide le formulaire, j'ai cette exception :


    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    ERROR [http-8080-Processor22] - Could not find action or result
    No result defined for action main.actions.save.SaveTModelAction and result input - action - file:/C:/MyData/Bull%20-%20Registre%20National/dev/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/webapps/UDDIAdmin/WEB-INF/classes/struts.xml:25:78
    	at com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:350)
    	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:253)
    	at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:150)
    	at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:48)
    	at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
    	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
    	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
    	at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
    	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
    	at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:123)
    	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
    	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
    	at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
    	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
    	at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:184)
    	at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
    	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
    	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
    	at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
    	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
    	at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:105)
    	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
    	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
    	at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
    	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
    	at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:83)
    	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
    	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
    	at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
    	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
    	at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:207)
    	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
    	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
    	at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
    	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
    	at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:74)
    	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
    	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
    	at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
    	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
    	at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:127)
    	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
    	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
    	at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
    	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
    	at org.apache.struts2.interceptor.ProfilingActivationInterceptor.intercept(ProfilingActivationInterceptor.java:107)
    	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
    	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
    	at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
    	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
    	at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:206)
    	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
    	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
    	at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
    	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
    	at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:115)
    	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
    	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
    	at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
    	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
    	at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:143)
    	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
    	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
    	at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
    	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
    	at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:121)
    	at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
    	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
    	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
    	at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
    	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
    	at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:170)
    	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
    	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
    	at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
    	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
    	at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:123)
    	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
    	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
    	at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
    	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
    	at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176)
    	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
    	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
    	at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
    	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
    	at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:50)
    	at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:504)
    	at org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:422)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
    	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:875)
    	at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
    	at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
    	at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
    	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
    	at java.lang.Thread.run(Unknown Source)
    Je ne sais pas s'il faut configurer autre chose...

    Merci d'avance pour votre aide

  2. #2
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 86
    Par défaut
    Pourrais tu donner plus d'information : ton struts.xml.
    Apparemment il ne trouve pas <result name="input" pour ton action.

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 125
    Par défaut
    Merci pour ta réponse

    Je ne sais pas pkoi il parle de <result name="input", voici une partie de mon struts.xml :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <action name="saveTModelAction" class="main.actions.save.SaveTModelAction">
    			<result name="success">/WEB-INF/pages/index.jsp</result>
    			<interceptor-ref name="validation"/>
    		</action>
    J'ai rajouté la ligne <interceptor-ref name="validation"/>, et je n'ai plus l'exception, par contre, la validation ne marche pas , l'action n'est pas exécuté, et je n'ai aucun message d'erreur...

    je ne sais pas ce qu'il faut faire...

  4. #4
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 86
    Par défaut
    Comme dit précédemment il faut rajouter l'input, dans la validation en cas d'anomalie il va te rediriger vers input.
    modifie ton fichier struts.xml par :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <action name="saveTModelAction" class="main.actions.save.SaveTModelAction">
                 <result name="input">/WEB-INF/pages/index.jsp</result>
    	<result name="success">/WEB-INF/pages/index.jsp</result>
    	<interceptor-ref name="validation"/>
    </action>

  5. #5
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 125
    Par défaut
    ca ne change pas grand chose, quand je valide mon formulaire, qu'il soit valide ou non, je reviens sur la page d'accueil, et l'action n'est pas executé...je comprends pas...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <s:form action="saveTModelAction" method="post" theme="simple">	
    	<fieldset id="myform">
    ...
    ...
    <td>
    <s:textfield name="tModelName" maxlength="25" size="50"/>
    <s:actionerror/>
    </td>
    et le fichier de validation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN"
           "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
     <validators>
    	<field name="tModelName">
    		<field-validator type="requiredstring">
    		<message>tModelName is required</message>
    		</field-validator>
    	</field>
    	<field name="wsdlURL">
    		<field-validator type="requiredstring">
    		<message>wsdlURL is required</message>
    		</field-validator>
    	</field>
    </validators>

  6. #6
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 86
    Par défaut
    Ok,
    1 ton action implémente bien ValidationAware.
    2 Si tu ouvre ton war est ce que le fichier saveTModelAction-validation.xml est bien présent dans le bon package, je dis car cela m'est déjà arrivé.

    Dans les logs(passe struts en mode debug) et vérifie dans les logs si il y a des traces qui t'indiquerai qu'il va chercher ton fichier de validation.

    Peux tu nous donner ton struts.xml complet?

  7. #7
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 125
    Par défaut
    1- l'action n'implémentait pas ValidationAware, je l'ai donc rajouté, mais ca ne change rien,

    2- saveTModelAction-validation.xml est bien dans le même package que mon action...

    J'ai débugué, et l'action semble ne pas être exécutée, je ne sais pas pour quelle raison, le fomulaire n'est pas validé, tous les champs récupérés sont null, pourtant je les ai bien remplis...


    Voici le struts.xml :
    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    <!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
        "http://struts.apache.org/dtds/struts-2.0.dtd">
    <struts>
        <package name="default" extends="struts-default">
    		<action name="index" class="main.actions.WelcomeAction">
    			<result name="success">/WEB-INF/pages/authenticate.jsp</result>
            </action>
            <action name="chooseAction" class="main.actions.ChooseAction">
    			<result name="success">/WEB-INF/pages/index.jsp</result>
            </action>
     
    		<!-- Authenticate -->
    		<action name="authenticate" class="main.actions.AuthenticateAction">
    			<result name="success">/WEB-INF/pages/index.jsp</result>
    			<result name="input">/WEB-INF/pages/authenticate.jsp</result>
            </action>
     
    		<!-- TModel actions -->
    		<action name="saveTModelAction" class="main.actions.save.SaveTModelAction">
    			<result name="success">/WEB-INF/pages/index.jsp</result>
    			<result name="input">/WEB-INF/pages/index.jsp</result>
    			<interceptor-ref name="validation"/>
    		</action>
    		<action name="findTModelAction" class="main.actions.find.FindTModelAction">
    			<result name="success">/WEB-INF/pages/index.jsp</result>
            </action>
    		<action name="deleteTModelAction" class="main.actions.delete.DeleteTModelAction">
    			<result name="success">/WEB-INF/pages/index.jsp</result>
            </action>
     
    		<!-- BusinessEntity actions -->
    		<action name="saveBusinessEntityAction" class="main.actions.save.SaveBusinessEntityAction">
    			<result name="success">/WEB-INF/pages/index.jsp</result>
            </action>
    		<action name="findBusinessEntityAction" class="main.actions.find.FindBusinessEntityAction">
    			<result name="success">/WEB-INF/pages/index.jsp</result>
            </action>
    		<action name="deleteBusinessEntityAction" class="main.actions.delete.DeleteBusinessEntityAction">
    			<result name="success">/WEB-INF/pages/index.jsp</result>
            </action>
     
            <!-- BusinessService actions -->
    		<action name="saveBusinessServiceAction" class="main.actions.save.SaveBusinessServiceAction">
    			<result name="success">/WEB-INF/pages/index.jsp</result>
            </action>
    		<action name="findBusinessServiceAction" class="main.actions.find.FindBusinessServiceAction">
    			<result name="success">/WEB-INF/pages/index.jsp</result>
            </action>
    		<action name="deleteBusinessServiceAction" class="main.actions.delete.DeleteBusinessServiceAction">
    			<result name="success">/WEB-INF/pages/index.jsp</result>
            </action>
     
    		<!-- Binding Template actions -->
    		<action name="saveBindingTemplateAction" class="main.actions.save.SaveBindingTemplateAction">
    			<result name="success">/WEB-INF/pages/index.jsp</result>
            </action>
    		<action name="findBindingTemplateAction" class="main.actions.find.FindBindingTemplateAction">
    			<result name="success">/WEB-INF/pages/index.jsp</result>
            </action>
    		<action name="deleteBindingTemplateAction" class="main.actions.delete.DeleteBindingTemplateAction">
    			<result name="success">/WEB-INF/pages/index.jsp</result>
    			<interceptor-ref name="validation"/>
    		</action>
        </package>
    </struts>

  8. #8
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 86
    Par défaut
    Peux tu nous joindre ton formulaire, action, log de ton serveur d'appli?

  9. #9
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 125
    Par défaut
    1- 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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    package main.actions.save;
     
    import java.util.Vector;
     
    import javax.servlet.http.HttpServletRequest;
     
    import org.apache.struts2.interceptor.ServletRequestAware;
    import org.uddi4j.UDDIException;
    import org.uddi4j.client.UDDIProxy;
    import org.uddi4j.datatype.OverviewDoc;
    import org.uddi4j.datatype.tmodel.TModel;
    import org.uddi4j.response.AuthToken;
    import org.uddi4j.response.TModelDetail;
    import org.uddi4j.transport.TransportException;
     
    import com.opensymphony.xwork2.ActionSupport;
    import com.opensymphony.xwork2.ValidationAware;
     
    public class SaveTModelAction extends ActionSupport implements ServletRequestAware, ValidationAware{
     
    	/** Serial Version UID */
    	private static final long serialVersionUID = 1L;
     
    	private HttpServletRequest servletRequest;
    	private String tModelName;
    	private String tModelDescription;
    	private String wsdlURL;
    	private String overViewDescription;
    	private String bouton;
    	private UDDIProxy proxy;
    	private AuthToken token;
     
    	/**
             * This action will save the TModel... 
        **/
    	public String execute() throws Exception {
    			if(getBouton()!=null && !getBouton().equals("Annuler")){
    				TModelDetail tModelDetail = null;
    				try{
    					// Get proxy/token from Session
    					setProxy((UDDIProxy)(getServletRequest().getSession().getAttribute("proxy")));
    					setToken((AuthToken)(getServletRequest().getSession().getAttribute("token")));
     
    					System.out.println("\nSave '" + getTModelName() + "'");
     
    					Vector<TModel> tModels = new Vector<TModel>();
    					TModel tModel = new TModel("", getTModelName());
    					tModel.setDefaultDescriptionString(getTModelDescription());
    					OverviewDoc overviewDoc = new OverviewDoc();
    					overviewDoc.setOverviewURL(getWsdlURL());
    					overviewDoc.setDefaultDescriptionString(getOverViewDescription());
    					tModel.setOverviewDoc(overviewDoc);
    					tModels.add(tModel);
     
    					// **** Save a TModel
    					tModelDetail = getProxy().save_tModel(getToken().getAuthInfoString(), tModels);
     
    					// Processing return type
    					Vector tModelVector = tModelDetail.getTModelVector();
    					TModel tModelReturned = (TModel)(tModelVector.elementAt(0));
    					System.out.println("TModel Saved: " + tModelReturned.getNameString());
    					System.out.println("TModel Key  : " + tModelReturned.getTModelKey());
    				}catch(UDDIException e){
    					System.err.println("\n ##### Error: exception is reported by: "+e.getClass().getName()+" at: "+ 
    							this.getClass().getName()+":: SaveTModel() failed ");
    				} catch (TransportException e) {
    					System.err.println("\n ##### Error: exception is reported by: "+e.getClass().getName()+" at: "+ 
    							this.getClass().getName()+":: SaveTModel() filed ");
    				}
    			}	
    			return SUCCESS;
    	}
    	public String getTModelDescription() {
    		return tModelDescription;
    	}
    	public void setTModelDescription(String modelDescription) {
    		tModelDescription = modelDescription;
    	}
    	public String getTModelName() {
    		return tModelName;
    	}
    	public void setTModelName(String modelName) {
    		tModelName = modelName;
    	}
    	public String getWsdlURL() {
    		return wsdlURL;
    	}
    	public void setWsdlURL(String wsdlURL) {
    		this.wsdlURL = wsdlURL;
    	}
    	public AuthToken getToken() {
    		return token;
    	}
    	public void setToken(AuthToken token) {
    		this.token = token;
    	}
    	public UDDIProxy getProxy() {
    		return proxy;
    	}
    	public void setProxy(UDDIProxy proxy) {
    		this.proxy = proxy;
    	}
    	public HttpServletRequest getServletRequest() {
    		return servletRequest;
    	}
    	public void setServletRequest(HttpServletRequest servletRequest) {
    			this.servletRequest = servletRequest;
    	}
    	public String getBouton() {
    		return bouton;
    	}
    	public void setBouton(String bouton) {
    		this.bouton = bouton;
    	}
    	public String getOverViewDescription() {
    		return overViewDescription;
    	}
    	public void setOverViewDescription(String overViewDescription) {
    		this.overViewDescription = overViewDescription;
    	}
    }
    2- Formulaire :

    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
        pageEncoding="ISO-8859-1"%>
     
    <%@ taglib prefix="s" uri="/struts-tags"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
     
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    	<link rel=stylesheet type="text/css" href="${pageContext.request.contextPath}/css/pages.css">
    </head>
     <body>
    	<s:form action="saveTModelAction" method="post" theme="simple" validate="true">	
    	<fieldset id="myform">
    		<legend><b><s:text name="tModel.title.save.long"/></b></legend>
      			<table id="formTable">
      					<tr>
      						<td colspan="2"> Les champs marqués d'un astérisque 
      								<img src="${pageContext.request.contextPath}/images/asterisque.gif">
      							 	sont obligatoires.
      						</td>	
      					<tr>
    		  			<tr>
    						<td width="80"> 
    					  		<s:label key="getText('tModel.title.name')"/>
    					  		<img src="${pageContext.request.contextPath}/images/asterisque.gif">
    					  	</td>
    					  	<td>
    					  		<s:textfield name="tModelName" maxlength="25" size="50"/>
    					  		<s:actionerror/>
    						</td>
    		  			</tr>
    		  			<tr>
    						<td width="80"> 
    							<s:label key="getText('tModel.title.description')"/>
    						</td>
    						<td>
    							<s:textarea name="tModelDescription" rows="4" cols="47"/>
    						</td>
    		  			</tr>
    		  			<tr>
    				  	  <td colspan="2" align="right">	
    					  	<fieldset id="legend">
    					  	  <legend><b>OverView Doc</b></legend>
    						  	<table>	
    						  		<tr>
    									<td width="80"> 
    								  		<s:label key="getText('tModel.title.wsdlURL')"/>
    								  		<img src="${pageContext.request.contextPath}/images/asterisque.gif">
    								  	</td>
    								  	<td>
    								  		<s:textfield name="wsdlURL" maxlength="100" size="45"/>
    									</td>
    			  					</tr>
    			  					<tr>
    									<td width="80"> 
    								  		<s:label key="getText('tModel.title.description')"/>
    								  	</td>
    								  	<td>
    								  		<s:textarea name="overViewDescription" rows="4" cols="42"/>
    									</td>
    			  					</tr>
    						  	</table>
    						</fieldset>
    				  	  </td>
    			    	</tr>
    		  			<tr>
    						<td align="right" valign="top" colspan="2">
    							<table border="0" align="center" width="100%">
    								<tbody>
    									<tr valign="top">
    										<td align="right" width="90%">
    											<s:submit name="bouton" value="Valider"/>
    										</td>
    										<td align="left" width="10%">
    											<a class="bouton" href="${pageContext.request.contextPath}/chooseAction.do?menu=Accueil">
    												<s:submit name="bouton" value="Annuler"/>
    											</a>
    										</td>
    									</tr>
    								</tbody>
    							</table>			
    						</td>
    					</tr>
    		  	</table>
    		  	</fieldset>
      	  </s:form>
    </body>
    </html>
    Pour les logs, je n'ai pas d'erreurs, et j'ai pas encore prévu de Log4J...

  10. #10
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 86
    Par défaut
    OK
    remplace :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <s:form action="saveTModelAction" method="post" theme="simple" validate="true">
    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <s:form action="saveTModelAction.action" method="POST" theme="simple">
    je ne suis pas sure que le validate="true" serve à grand chose.

  11. #11
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 125
    Par défaut
    Merci pour ton aide,

    pour le validate="true", j'avais déja testé sans, mais ca ne marchait pas non plus...
    J'ai testé avec ton bout de code, et j'ai ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WARN [http-8080-Processor23] - No configuration found for the specified action: 'saveTModelAction.action' in namespace: '/'. Form action defaulting to 'action' attribute's literal value
    L'action saveTModelAction.action n'est pas reconnue apparemment...

  12. #12
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 86
    Par défaut
    Donc ton action est bien appelé c'était juste pour valider, tu peux maintenant enlever le ".action". Ta méthode execute() est-elle appelée?

  13. #13
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 125
    Par défaut
    Oui, la méthode execute est appelée, mais les données que je valide sont tous null, et comme la variable "bouton" est null, l'action ne fait rien...
    le if :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(getBouton()!=null && !getBouton().equals("Annuler")){
    ne passe pas...

    Je ne sais pas ce qui fait que les données sont null, pourtant sans la validation, mon fomulaire fonctionnait très bien...

  14. #14
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 86
    Par défaut
    Je ne vois pas d'ou vient ton problème le mieux est de nous fournir les logs de ton serveur d'appli, il faut le passer en mode debug, tu auras ainsi plus de trace à nous fournir.

  15. #15
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 125
    Par défaut
    Juste une dernière question, dans mon struts.xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <action name="saveTModelAction" class="main.actions.save.SaveTModelAction">
    			<result name="success">/WEB-INF/pages/index.jsp</result>
    			<result name="input">/WEB-INF/pages/index.jsp</result>
    			<interceptor-ref name="validation"/>
    		</action>
    Je veux savoir s'il n'ya rien à configurer dans web.xml, ou struts.properties, ou bien mettre qque part le fichier validation.xml qui contient la liste des validation..

    Dans tous les cas, j'ai suivi à la lettre le tuto ci-dessous :
    http://www.struts2.org/category/struts2-validation/

    Merci bien romano2003 pour ta patience...

  16. #16
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 86
    Par défaut
    Non tu n'as pas besoin de configurer autre chose.
    Dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <action name="saveTModelAction" class="main.actions.save.SaveTModelAction">
    			<result name="success">/WEB-INF/pages/index.jsp</result>
    			<result name="input">/WEB-INF/pages/index.jsp</result>
    			<interceptor-ref name="validation"/>
    		</action>
    supprime <interceptor-ref name="validation"/>

Discussions similaires

  1. [W3C] Problème validation w3c avec html/javascript
    Par mademoisellem dans le forum Balisage (X)HTML et validation W3C
    Réponses: 22
    Dernier message: 31/01/2008, 16h19
  2. Problème validation CSS
    Par hartecel dans le forum Mise en page CSS
    Réponses: 8
    Dernier message: 07/03/2007, 10h53
  3. [XSD] Problème Validation XML XSD
    Par scelines dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 04/05/2006, 17h54
  4. [W3C] problème validation W3C d'un site
    Par nicolas77 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 13/04/2006, 14h04
  5. Réponses: 8
    Dernier message: 05/02/2006, 10h39

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