Page 1 sur 1

TP11

Publié : 15 janv. 2020 20:42
par delign_i
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

Re: TP11

Publié : 15 janv. 2020 21:13
par velitc_v
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 ;))

Re: TP11

Publié : 15 janv. 2020 21:15
par delign_i
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...

Re: TP11

Publié : 15 janv. 2020 21:28
par velitc_v
Regarde model.addAttribute("cart", orderId);
<h3 th:text="#{order.complete}"></h3
C'est pas le même nom

Re: TP11

Publié : 15 janv. 2020 22:06
par delign_i
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.

Re: TP11

Publié : 15 janv. 2020 23:14
par harrak_z
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

Re: TP11

Publié : 16 janv. 2020 0:07
par delign_i
Merci pour votre aide ! J'ai trouvé pourquoi je tournais en rond, je retournais "cart" au lieu de "checkout", tsss...