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

Spring Web Java Discussion :

Erreur dans un formulaire - Spring MVC


Sujet :

Spring Web Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 35
    Points : 30
    Points
    30
    Par défaut Erreur dans un formulaire - Spring MVC
    Bonjour,

    J'ai une erreur au retour d'un formulaire d'une page JSP et je ne comprends pas ce qui cloche...
    Au départ, j'ai un model User qui possède une référence vers une classe Authorities.

    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
     
    @Entity
    @Table(name = "USER")
    public class Users extends AbstractGenericEntity {
     
    	private static final long serialVersionUID = -8865263456343696037L;
    	@Id
        @GeneratedValue(strategy = GenerationType.SEQUENCE, generator="supp_seq_users")
        @SequenceGenerator(name="supp_seq_users", sequenceName="SEQUENCEUSERS")
        @Basic(optional = false)
        @Column(name = "IDUSERS", nullable = false, precision = 22, scale = 0)
        private Long idusers;
        @Basic(optional = false)
        @Column(name = "USERNAME", nullable = false, length = 64)
        private String userName;
        @Basic(optional = false)
        @Column(name = "PASSWORD", nullable = false, length = 64)
        private String password;
        @Basic(optional = true)
        @Column(name = "EMAIL", nullable = true, length = 64)
        private String email;
        @Basic(optional = false)
        @Column(name = "ENABLED", nullable = false, length = 38)
        private Boolean enabled;
        @ForeignKey(name = "IDAUTHORITIESFK")
        @JoinColumn(name = "IDAUTHORITIESFK", referencedColumnName = "IDAUTHORITIES", insertable=true, updatable=true)
        @ManyToOne(fetch = FetchType.EAGER)
        private Authorities authorities;
     
      etc...
    }
    Dans mon controller, je décide d'afficher l'état d'un user :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    @RequestMapping(value="/user/addEdit.do")
    	public String addEdit(@RequestParam(value="id", required=false) Long id, ModelMap model) {
    		logger.info("UserController, edit for update a user");
    		Users user = null;
    		if (id != null) {
    			user = this.userService.findByIduser(id);
    			model.addAttribute("user", user);
    			return "editUser";
    		}
    		return "toto";
    	}
    La page JSP qui s'occupe de l'affichage, la voilà :

    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
     
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    <%@ taglib uri='http://java.sun.com/jsp/jstl/functions' prefix='fn'%>
    <%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
    <%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
     
    <c:url var="url" value="/user/edit.do" />
     
    <CENTER>
    <div id="part" class="indexlayout">
    <form:form action="${url}" commandName="user">
    	<form:hidden path="authorities" />
    	<form:hidden path="password" />
    	<form:hidden path="idusers" />
    	<p class="mandatory"><spring:message code="mandatory.field" /></p>
    	<h2><spring:message code="user.addedit.title" /></h2>
    	<tr>
    		<span class="form-error-message">
    			<form:errors path="userName" /><br />
    			<form:errors path="email" /><br />
    			<form:errors path="authorities" /><br />
    		</span>
    	</tr>
    	<fieldset>
    	<table>
    		<tr>
    			<td>
    				<label for="username"><b><spring:message code="user.addedit.username" /></b></label>
    				<form:input	path="userName" cssErrorClass="form-error-field" id="userNameField" />
    				<span class="mandatory">*</span></td>
    		</tr>
    		<tr>
    			<td>
    				<label for="email"><b><spring:message code="user.addedit.email" /></b></label>
    				<form:input path="email" cssErrorClass="form-error-field" id="emailField" />
    				<span class="mandatory">*</span></td>
    		</tr>
    		<tr>
    			<td>
    			    <label for="enabled"><b><spring:message code="user.addedit.enabled" /></b></label>
    			    <form:checkbox path="enabled" cssErrorClass="form-error-field" id="enabledField" value="<spring:message code='user.addedit.enabled'/>" />
    			</td>
    		</tr>
    		<tr>
    			<td>
    			    <label for="user_role"><b><spring:message code="user.addedit.role" /></b></label>
    			    <form:radiobutton path="authorities.role" value="ROLE_ADMIN" /> 
    					<label for="role_admin" class="nofloat"><b><spring:message code="user.authorities.administrator" /></b></label>
    				<form:radiobutton path="authorities.role" value="ROLE_USER" />
    				    <label for="role_user" class="nofloat"><b><spring:message code="user.authorities.user" /></b></label> 
    			</td>
    		</tr>
    		<tr>
    			<td>
    			<hr />
    			</td>
    		</tr>
    		<tr>
    			<td>
    				<button type="submit"><spring:message code="button.label.save"/></button>
    				<button type="button" onClick="location.href='<c:url value="/user/list.do"/>'"><spring:message code="operation.cancelAction"  /></button>
    			</td>
    		</tr>
    	</table>
    	</fieldset>
    </form:form>
    </div>
    </CENTER>
    Donc dans cette page, il y a deux radios boutons qui permettent de choisir entre "l'authorities" ROLE_ADMIN ou ROLE_USER.
    A l'affichage, pas de problème, pour un user donné, le bon radio bouton est sélectionné.

    Puis, si je décide de modifier quoi que ce soit dans cette page pour retourner vers le contrôleur, j'ai de suite une erreur qui apparaît dès que j'ai appuyé
    sur le bouton "submit", je ne retourne d'ailleurs jamais dans le contrôleur.
    L'erreur est la suivante :

    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
     
    org.springframework.beans.NullValueInNestedPathException: Invalid property 'authorities' of bean class [com.jva.disc.beans.Users]: Value of nested property 'authorities' is null
    	at org.springframework.beans.BeanWrapperImpl.getNestedBeanWrapper(BeanWrapperImpl.java:449)
    	at org.springframework.beans.BeanWrapperImpl.getBeanWrapperForPropertyPath(BeanWrapperImpl.java:424)
    	at org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:641)
    	at org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:78)
    	at org.springframework.validation.DataBinder.applyPropertyValues(DataBinder.java:587)
    	at org.springframework.validation.DataBinder.doBind(DataBinder.java:489)
    	at org.springframework.web.bind.WebDataBinder.doBind(WebDataBinder.java:149)
    	at org.springframework.web.bind.ServletRequestDataBinder.bind(ServletRequestDataBinder.java:110)
    	at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter$ServletHandlerMethodInvoker.doBind(AnnotationMethodHandlerAdapter.java:566)
    	at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.resolveHandlerArguments(HandlerMethodInvoker.java:213)
    	at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:132)
    	at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:326)
    	at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:313)
    	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:875)
    	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:807)
    	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:571)
    	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:511)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    	at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:378)
    	at org.springframework.security.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109)
    	at org.springframework.security.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
    	at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
    	at org.springframework.security.ui.SessionFixationProtectionFilter.doFilterHttp(SessionFixationProtectionFilter.java:67)
    	at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
    	at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
    	at org.springframework.security.ui.ExceptionTranslationFilter.doFilterHttp(ExceptionTranslationFilter.java:101)
    	at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
    	at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
    	at org.springframework.security.providers.anonymous.AnonymousProcessingFilter.doFilterHttp(AnonymousProcessingFilter.java:105)
    	at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
    	at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
    	at org.springframework.security.ui.rememberme.RememberMeProcessingFilter.doFilterHttp(RememberMeProcessingFilter.java:116)
    	at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
    	at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
    	at org.springframework.security.wrapper.SecurityContextHolderAwareRequestFilter.doFilterHttp(SecurityContextHolderAwareRequestFilter.java:91)
    	at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
    	at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
    	at org.springframework.security.ui.basicauth.BasicProcessingFilter.doFilterHttp(BasicProcessingFilter.java:174)
    	at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
    	at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
    	at org.springframework.security.ui.AbstractProcessingFilter.doFilterHttp(AbstractProcessingFilter.java:277)
    	at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
    	at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
    	at org.springframework.security.ui.logout.LogoutFilter.doFilterHttp(LogoutFilter.java:89)
    	at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
    	at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
    	at org.springframework.security.context.HttpSessionContextIntegrationFilter.doFilterHttp(HttpSessionContextIntegrationFilter.java:235)
    	at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
    	at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
    	at org.springframework.security.concurrent.ConcurrentSessionFilter.doFilterHttp(ConcurrentSessionFilter.java:99)
    	at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
    	at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
    	at org.springframework.security.util.FilterChainProxy.doFilter(FilterChainProxy.java:175)
    	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:236)
    	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    	at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
    	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
    	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
    	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1001)
    	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
    	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    	at java.lang.Thread.run(Unknown Source)
    Il me dit que l'attribut "authorities" est null... Pourquoi ??
    Une connaissance m'a dit que le protocole HTTP est stateless (chose que je savais) et qu'il fallait ajouter dans le form, cette instruction :
    <form:hidden path="authorities" />
    Chose que j'ai faite, mais j'ai tjs cette erreur...
    Si quelqu'un a une idée, je suis preneur...

  2. #2
    Membre habitué Avatar de chewing-gum
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2009
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2009
    Messages : 105
    Points : 137
    Points
    137
    Par défaut
    Je n'en suis pas certain mais... Je dirais que lorsque tu cliques sur le bouton "POST", tu as un problème de binding sur la propriété "authorities".

    En bref, Spring ne sait pas où et comment ajouter les valeurs "ROLE_USER" et "ROLE_ADMIN" à l'objet Authorities.
    Du coup, ta variable est forcément null.
    Essayer de "setter" ta variable authorities avec une valeur par défaut pour voir si cette erreur est toujours présente.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 35
    Points : 30
    Points
    30
    Par défaut
    Citation Envoyé par chewing-gum Voir le message
    Je n'en suis pas certain mais... Je dirais que lorsque tu cliques sur le bouton "POST", tu as un problème de binding sur la propriété "authorities".

    En bref, Spring ne sait pas où et comment ajouter les valeurs "ROLE_USER" et "ROLE_ADMIN" à l'objet Authorities.
    Du coup, ta variable est forcément null.
    Essayer de "setter" ta variable authorities avec une valeur par défaut pour voir si cette erreur est toujours présente.
    Tu veux dire setter la variable authorities dans un scriptlet de la page JSP ?

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

Discussions similaires

  1. [MVC] Remonter d'erreur dans un projet web MVC & Spring
    Par thebestfriend dans le forum Spring Web
    Réponses: 0
    Dernier message: 30/06/2010, 08h20
  2. message d'erreur dans sous formulaire
    Par tojiji dans le forum Access
    Réponses: 6
    Dernier message: 28/07/2006, 12h09
  3. [MySQL] Erreur dans mon formulaire
    Par rane dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 19/07/2006, 14h06
  4. Réponses: 2
    Dernier message: 06/07/2006, 08h22
  5. [débutant] Erreur dans les formulaires
    Par mytika dans le forum Access
    Réponses: 7
    Dernier message: 18/05/2006, 15h57

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