Bonjour,
Ce que je veux faire :
Fabriquer un json ne comportant que deux colonnes d'une classe Produit (la colonne 'designation' et 'id').
Au début, j'ai essayé de récupérer par hibernate seulement ces deux colonnes pour les balancer au client et struts m'aurait fait la conversion en json directement (du moins je pense cela ...) mais je n'y suis pas arrivé donc je me suis dit que ce serait bien aussi de fabriquer un json ne comportant que ces deux colonnes car j'avais déjà fait la requête de tous les objets Produits dans la méthode "repertoire" ... cela m'évite de faire un autre requête pour deux colonnes que je possède déjà dans la méthode "repertoire"...
Cette méthode qui est appelée au chargement de la page possède les Objets Produits grâce auxquels je pourrait faire mon json ....
Voici la classe Action avec la méthode "repertoire" :
mais survient l'erreur suivante :Code:
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 package com.chezyen.commandes.actions; import java.util.HashMap; import java.util.List; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import com.chezyen.commandes.dao.IConditionnementDAO; import com.chezyen.commandes.dao.IProduitConditionneDAO; import com.chezyen.commandes.dao.IProduitDAO; import com.chezyen.commandes.metier.Conditionnement; import com.chezyen.commandes.metier.Produit; import com.chezyen.commandes.metier.ProduitConditionne; import com.opensymphony.xwork2.ActionSupport; public class ProduitsConditionnesAction extends ActionSupport{ /** * */ private static final long serialVersionUID = 1L; private static Logger log = LogManager.getLogger(ProduitsConditionnesAction.class); private IProduitConditionneDAO produitConditionneDAO; public IProduitConditionneDAO getProduitConditionneDAO() {return produitConditionneDAO;} public void setProduitConditionneDAO(IProduitConditionneDAO produitConditionneDAO) {this.produitConditionneDAO = produitConditionneDAO;} private int produitConditionneID; private Produit produitConditionneProduit; private Conditionnement produitConditionneConditionnement; private double produitConditionnePrixProdCond; private boolean produitConditionneEnCarte; public int getProduitConditionneID() {return produitConditionneID;} public void setProduitConditionneID(int produitConditionneID) {this.produitConditionneID = produitConditionneID;} public Produit getProduitConditionneProduit() {return produitConditionneProduit;} public void setProduitConditionneProduit(Produit produitConditionneProduit) {this.produitConditionneProduit = produitConditionneProduit;} public Conditionnement getProduitConditionneConditionnement() {return produitConditionneConditionnement;} public void setProduitConditionneConditionnement(Conditionnement produitConditionneConditionnement) {this.produitConditionneConditionnement = produitConditionneConditionnement;} public double getProduitConditionnePrixProdCond() {return produitConditionnePrixProdCond;} public void setProduitConditionnePrixProdCond(double produitConditionnePrixProdCond) {this.produitConditionnePrixProdCond = produitConditionnePrixProdCond;} public boolean isProduitConditionneEnCarte() {return produitConditionneEnCarte;} public void setProduitConditionneEnCarte(boolean produitConditionneEnCarte) {this.produitConditionneEnCarte = produitConditionneEnCarte;} private ProduitConditionne produitConditionne; public ProduitConditionne getProduitConditionne() {return produitConditionne;} private List<ProduitConditionne> produitsConditionnes; public List<ProduitConditionne> getProduitsConditionnes() {return produitsConditionnes;} private StringBuffer sbListProduits; public StringBuffer getSbListProduits() {return sbListProduits;} public String repertoire() { log.info("ProduitsConditionnesAction - repertoire"); this.produitsConditionnes = produitConditionneDAO.findAll(); sbListProduits.append("["); for (ProduitConditionne pc : this.produitsConditionnes) { log.info("desi : " + pc.getProduit().getDesignation() + " id : " + pc.getProduit().getIdProduit()); sbListProduits.append("{designation:'"); sbListProduits.append(pc.getProduit().getDesignation()); sbListProduits.append("', id:"); sbListProduits.append(pc.getProduit().getIdProduit()); sbListProduits.append("},"); } sbListProduits.append("];"); log.info("liste produits : " + sbListProduits); return SUCCESS; } }
Je rencontre une erreur lorsque j'essaie de faire un append dans un stringBuffer à l'intérieur d'une méthode d'une classe Action.
Dans le navigateur, donc côté client, je reçoit l'erreur suivante qui indique un nullPointerException que je ne comprends pas étant donné que j'ai instancié mon Stringbuffer ...
Ce message indique la ligne 62 qui correspond à la ligne 60 de la classe Action détaillée ci-dessus :
et dans la console d'Eclipse, je reçoit ceci :Code:
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
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148 <html> <head> <title>Struts Problem Report</title> </head> <body> <h2>Struts Problem Report</h2> <p> Struts has detected an unhandled exception: </p> <div id="exception-info"> <table> <tr> <td><strong>Messages</strong>:</td> <td> </td> </tr> <tr> <td><strong>File</strong>:</td> <td>com/chezyen/commandes/actions/ProduitsConditionnesAction.java</td> </tr> <tr> <td><strong>Line number</strong>:</td> <td>62</td> </tr> </table> </div> <div id="stacktraces"> <hr /> <h3>Stacktraces</h3> <div class="stacktrace" style="padding-left: 0em"> <strong>java.lang.NullPointerException</strong> <div> <pre> com.chezyen.commandes.actions.ProduitsConditionnesAction.repertoire(ProduitsConditionnesAction.java:62) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke(Method.java:606) ognl.OgnlRuntime.invokeMethod(OgnlRuntime.java:870) ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:1293) ognl.ObjectMethodAccessor.callMethod(ObjectMethodAccessor.java:68) com.opensymphony.xwork2.ognl.accessor.XWorkMethodAccessor.callMethodWithDebugInfo(XWorkMethodAccessor.java:117) com.opensymphony.xwork2.ognl.accessor.XWorkMethodAccessor.callMethod(XWorkMethodAccessor.java:108) ognl.OgnlRuntime.callMethod(OgnlRuntime.java:1369) ognl.ASTMethod.getValueBody(ASTMethod.java:90) ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:212) ognl.SimpleNode.getValue(SimpleNode.java:258) ognl.Ognl.getValue(Ognl.java:494) ognl.Ognl.getValue(Ognl.java:458) com.opensymphony.xwork2.ognl.OgnlUtil$2.execute(OgnlUtil.java:309) com.opensymphony.xwork2.ognl.OgnlUtil.compileAndExecute(OgnlUtil.java:340) com.opensymphony.xwork2.ognl.OgnlUtil.getValue(OgnlUtil.java:307) com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:423) com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:287) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:250) org.apache.struts2.interceptor.DeprecationInterceptor.intercept(DeprecationInterceptor.java:41) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:244) org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:256) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:244) com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:167) com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:244) com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:265) org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:76) com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:244) com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:244) com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:229) com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:244) com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:229) com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:244) com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:191) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:244) org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:73) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:244) org.apache.struts2.interceptor.DateTextFieldInterceptor.intercept(DateTextFieldInterceptor.java:125) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:244) org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:91) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:244) org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:253) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:244) com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:244) com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:244) com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:244) com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171) com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:244) com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:139) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:244) org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:244) com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:193) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:244) com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:189) com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:244) org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54) org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:564) org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:81) org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:99) org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter.doFilterInternal(OpenEntityManagerInViewFilter.java:178) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212) org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616) org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:528) org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1099) org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:670) org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520) org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476) java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) java.lang.Thread.run(Thread.java:745) </pre> </div> </div> </div> <div class="footer"> <hr /> <p> You are seeing this page because development mode is enabled. Development mode, or devMode, enables extra debugging behaviors and reports to assist developers. To disable this mode, set: <pre> struts.devMode=false </pre> in your <code>WEB-INF/classes/struts.properties</code> file. </p> </div> </body> </html>
Cela fait plusieurs fois que j'essaie de fabriquer mon JSON d'une manière ou d'une autre mais je n'y arrive pas.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 2016-08-05 00:22:18,421 INFO [http-nio-8080-exec-5] actions.IndexAction (IndexAction.java:14) - Appel de index 2016-08-05 00:22:18,678 INFO [http-nio-8080-exec-7] actions.ProduitsConditionnesAction (ProduitsConditionnesAction.java:57) - ProduitsConditionnesAction - repertoire 2016-08-05 00:22:18,688 INFO [http-nio-8080-exec-7] dao.GenericDAO (GenericDAO.java:32) - GenericDAO : findAll - from ProduitConditionne Hibernate: select produitcon0_.idProduitConditionne as idProdui1_6_, produitcon0_.idConditionnement as idCondit4_6_, produitcon0_.enCarte as enCarte2_6_, produitcon0_.prixProdCond as prixProd3_6_, produitcon0_.idProduit as idProdui5_6_ from ProduitConditionne produitcon0_ Hibernate: select conditionn0_.idConditionnement as idCondit1_2_0_, conditionn0_.designation as designat2_2_0_, conditionn0_.quantite as quantite3_2_0_ from Conditionnement conditionn0_ where conditionn0_.idConditionnement=? Hibernate: select produit0_.idProduit as idProdui1_5_0_, produit0_.designation as designat2_5_0_, produit0_.prix as prix3_5_0_, produit0_.stock as stock4_5_0_ from Produit produit0_ where produit0_.idProduit=? Hibernate: select conditionn0_.idConditionnement as idCondit1_2_0_, conditionn0_.designation as designat2_2_0_, conditionn0_.quantite as quantite3_2_0_ from Conditionnement conditionn0_ where conditionn0_.idConditionnement=? Hibernate: select produit0_.idProduit as idProdui1_5_0_, produit0_.designation as designat2_5_0_, produit0_.prix as prix3_5_0_, produit0_.stock as stock4_5_0_ from Produit produit0_ where produit0_.idProduit=? 2016-08-05 00:22:38,042 INFO [http-nio-8080-exec-9] actions.IndexAction (IndexAction.java:14) - Appel de index 2016-08-05 00:22:38,845 INFO [http-nio-8080-exec-8] actions.ProduitsConditionnesAction (ProduitsConditionnesAction.java:57) - ProduitsConditionnesAction - repertoire 2016-08-05 00:22:38,847 INFO [http-nio-8080-exec-8] dao.GenericDAO (GenericDAO.java:32) - GenericDAO : findAll - from ProduitConditionne Hibernate: select produitcon0_.idProduitConditionne as idProdui1_6_, produitcon0_.idConditionnement as idCondit4_6_, produitcon0_.enCarte as enCarte2_6_, produitcon0_.prixProdCond as prixProd3_6_, produitcon0_.idProduit as idProdui5_6_ from ProduitConditionne produitcon0_ Hibernate: select conditionn0_.idConditionnement as idCondit1_2_0_, conditionn0_.designation as designat2_2_0_, conditionn0_.quantite as quantite3_2_0_ from Conditionnement conditionn0_ where conditionn0_.idConditionnement=? Hibernate: select produit0_.idProduit as idProdui1_5_0_, produit0_.designation as designat2_5_0_, produit0_.prix as prix3_5_0_, produit0_.stock as stock4_5_0_ from Produit produit0_ where produit0_.idProduit=? Hibernate: select conditionn0_.idConditionnement as idCondit1_2_0_, conditionn0_.designation as designat2_2_0_, conditionn0_.quantite as quantite3_2_0_ from Conditionnement conditionn0_ where conditionn0_.idConditionnement=? Hibernate: select produit0_.idProduit as idProdui1_5_0_, produit0_.designation as designat2_5_0_, produit0_.prix as prix3_5_0_, produit0_.stock as stock4_5_0_ from Produit produit0_ where produit0_.idProduit=?
Quelqu'un saurait-il m'aider s'il vous plaît ?
merci !