TP11

Modérateurs : graffiop, jmdouin, agoncal, mlebihan

delign_i
Messages : 25
Inscription : 02 avr. 2019 16:18

TP11

Message par delign_i » 15 janv. 2020 20:42

Bonjour,

J'ai un souci avec la classe ShoppingCartCheckoutController et la page checkout.html.
Mon contrôleur ne lève pas d'exception, mais lorsque l'on clique sur valider, "le panier est vide" s'affiche, et la commande n'est pas enregistrée dans la BD non plus. Je ne sais pas si je récupère bien l'username et le shoppingCart et je ne suis pas sûre de mon thymeleaf, je tourne en boucle sur ce problème.
Le code du contrôleur :

Code : Tout sélectionner

UserDetails userDetails = (UserDetails) authentication.getPrincipal();
		String userId = userDetails.getUsername();
		UserDTO userDTO = null;
		try {
			userDTO = userService.findUser(userId);
		} catch (FinderException | CheckException e) {
			Trace.throwing(getCname(), mname, e);
			model.addAttribute("exception", e.getClass().getName());
		}
		String username = userDTO.getUsername();

		Map<String, Integer> shoppingCart = shoppingCartService.getCart();
		try {		
			Long orderId = orderService.createOrder(username, shoppingCart);
			model.addAttribute("cart", orderId);			
			//Empty the shoppingCart
			shoppingCartService.empty();
		} catch (CreateException | CheckException e2) {
			Trace.throwing(getCname(), mname, e2);
			model.addAttribute("exception", e2.getClass().getName());
		}	
checkout :

Code : Tout sélectionner

<div  sec:authorize="isAuthenticated()">
	<li th:if="${orderId != null}" sec:authorize="hasAnyRole('USER','FRANCHISEE')">
		<h3 th:text="#{order.complete}"></h3>
		<span th:text="#{order.id}"></span>
		<span th:text="#{Thanks.for.shopping}">
	</li>
</div>
Si vous voyez où sont mes erreurs ? Merci d'avance

velitc_v
Messages : 64
Inscription : 04 oct. 2019 14:53

Re: TP11

Message par velitc_v » 15 janv. 2020 21:13

Tu peux tester s'il y a ton panier est vide... je pense que ça vient de là. Sinon :
A priori cette ligne n'est pas nécessaire car la vérification est faite dans createOrder(String...) userDTO = userService.findUser(userId);
Personnellement, je n'ai pas passé le String username = userDTO.getUsername(); mais plutôt userDetails.getUsername(); en param de createOrder. A vérifier... cela dit mon code ne marche pas ;))

delign_i
Messages : 25
Inscription : 02 avr. 2019 16:18

Re: TP11

Message par delign_i » 15 janv. 2020 21:15

Merci de ta réponse !
J'avais oublié de démarrer Barkbank :( , la commande est bien enregistrée dans la bd, reste l'affichage thymeleaf où je coince pour l'instant...

velitc_v
Messages : 64
Inscription : 04 oct. 2019 14:53

Re: TP11

Message par velitc_v » 15 janv. 2020 21:28

Regarde model.addAttribute("cart", orderId);
<h3 th:text="#{order.complete}"></h3
C'est pas le même nom

delign_i
Messages : 25
Inscription : 02 avr. 2019 16:18

Re: TP11

Message par delign_i » 15 janv. 2020 22:06

Je ne comprends pas bien, j'ai essayé en changeant pour "model.addAttribute("order", orderId);", ça ne change rien. J'ai également essayé <h3 th:text="#{cart}"></h3 pareil. Il y a un truc que je ne saisi pas je pense.

harrak_z
Messages : 66
Inscription : 19 oct. 2019 20:15

Re: TP11

Message par harrak_z » 15 janv. 2020 23:14

Si t'as déclaré dans ton controllor

model.addAttribute("idOrder", idOrder);

Essaie ça :
<h1 th:text="#{order.complete}"></h1>
<br>
<p><span style="font-weight:bold" th:text="#{order.id}+' '+${idOrder}"> </span> </p>

NB : Dans Thymeleaf on utilise : # pour afficher la valeur de la clé déclaré dans le ficher message.properties et $ pour afficher les attributs du model spring : "${attributename}” et "#{message}"

idOrder ici est envoyé dans le model

delign_i
Messages : 25
Inscription : 02 avr. 2019 16:18

Re: TP11

Message par delign_i » 16 janv. 2020 0:07

Merci pour votre aide ! J'ai trouvé pourquoi je tournais en rond, je retournais "cart" au lieu de "checkout", tsss...

Répondre