Bonjour,
je suis tombé dans le bain de JPA et j'essaie de faire un formulaire pour ajouter des personnes des données dans la table "Personne".
j'ai ma page index.xhml suivante:
Ensuite, j'ai une méthode "prepareCreate2" qui va créer une nouvelle instance de Personne et de sauver en BD via la persistence et la méthode "saveNew".
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 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:p="http://primefaces.org/ui"> <h:head> <title><ui:insert name="title">Default Title</ui:insert></title> <h:outputStylesheet library="css" name="pfcrud.css"/> <h:outputScript library="scripts" name="pfcrud.js"/> </h:head> <body> <p:growl id="growl" widgetVar="my_test" life="1000"/> <!-- <p:layout fullPage="true" > --> <h:form id="FormularioForm"> <h:panelGroup id="display"> <p:panelGrid columns="2" > <p:outputLabel value="#{bundle.CreateVotanteLabel_nombreReconoce}" for="nombreReconoce" /> <p:inputText id="nombreReconoce" value="#{personaController.selected.persona}" title="#{bundle.CreatePersonaTitle_persona}" required="true" requiredMessage="#{bundle.CreatePersonaRequiredMessage_persona}"/> <p:outputLabel value="#{bundle.CreateVotanteLabel_nombre}" for="nombre" /> <p:inputText id="nombre" value="#{personaController.selected.persona}" title="#{bundle.CreatePersonaTitle_persona}" required="false" requiredMessage="#{bundle.CreatePersonaRequiredMessage_persona}"/> <p:outputLabel value="#{bundle.CreateVotanteLabel_appellido}" for="appellido" /> <p:inputText id="appellido" value="#{personaController.selected.persona}" title="#{bundle.CreatePersonaTitle_persona}" required="false" requiredMessage="#{bundle.CreatePersonaRequiredMessage_persona}"/> <p:outputLabel value="#{bundle.CreateVotanteLabel_documentoIdentidad}" for="documentoIdentidad" /> <p:selectOneMenu id="documentoIdentidad" value="#tipoIdentificacionController.selected}" > <f:selectItems value="#{tipoIdentificacionController.items}" var="tipoIdentificacionItem" itemValue="#{tipoIdentificacionItem}" itemLabel="#{tipoIdentificacionItem.descripcionCorta.toString()}" /> <!-- <f:converter binding="#{tipoIdentificacionConverter}"/>--> </p:selectOneMenu> <p:outputLabel value="#{bundle.CreateVotanteLabel_documentoIdentidadNumero}" for="documentoIdentidadNumero" /> <p:inputText id="documentoIdentidadNumero" value="#{personaController.selected.persona}" title="#{bundle.CreatePersonaTitle_persona}" required="true" requiredMessage="#{bundle.CreatePersonaRequiredMessage_persona}"/> <p:outputLabel value="#{bundle.CreateVotanteLabel_sectorSocial}" for="lgbti" /> <p:selectOneMenu id="lgbti" value="#lgbtiController.selected}" > <f:selectItem itemLabel="#{bundle.SelectOneMessage}"/> <f:selectItems value="#{lgbtiController.items}" var="lgbtiItem" itemValue="#{lgbtiItem}" itemLabel="#{lgbtiItem.descripcion.toString()}" /> <f:converter binding="#{lgbtiConverter}"/> </p:selectOneMenu> <p:outputLabel value="#{bundle.CreateVotanteLabel_correoElectronico}" for="correoElectronico" /> <p:inputText id="correoElectronico" value="#{personaController.selected.persona}" title="#{bundle.CreatePersonaTitle_persona}" required="true" requiredMessage="#{bundle.CreatePersonaRequiredMessage_persona}"/> <p:outputLabel value="#{bundle.CreateVotanteLabel_fechaNacimiento}" for="fechaNacimiento" /> <p:inputText id="fechaNacimiento" value="#{personaController.selected.persona}" title="#{bundle.CreatePersonaTitle_persona}" required="true" requiredMessage="#{bundle.CreatePersonaRequiredMessage_persona}"/> <p:outputLabel value="#{bundle.CreateVotanteLabel_localidad}" for="localidad" /> <p:inputText id="localidad" value="#{personaController.selected.persona}" title="#{bundle.CreatePersonaTitle_persona}" required="true" requiredMessage="#{bundle.CreatePersonaRequiredMessage_persona}"/> <p:outputLabel value="#{bundle.CreateVotanteLabel_telephono}" for="telefono" /> <p:inputText id="telefono" value="#{personaController.selected.persona}" title="#{bundle.CreatePersonaTitle_persona}" required="false" requiredMessage="#{bundle.CreatePersonaRequiredMessage_persona}"/> <center> <p:outputLabel value="#{bundle.CreateVotanteLabel_contacto}" /> </center> </p:panelGrid> <p:commandButton id="createButton" icon="ui-icon-plus" value="#{bundle.Create}" action="#{personaController.prepareCreate2}"/> <p:commandButton value="#{bundle.Cancel}" /> </h:panelGroup> </h:form> <!-- </p:layout>--> </body> </html>
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 public T prepareCreate2(ActionEvent event) { T newItem; try { newItem = itemClass.newInstance(); this.selected = newItem; initializeEmbeddableKey(); String msg = ResourceBundle.getBundle("/Bundle").getString(itemClass.getSimpleName() + "Created"); persist(AbstractController.PersistAction.CREATE, msg); if (!isValidationFailed()) { items = null; // Invalidate list of items to trigger re-query. } saveNew(event); return newItem; } catch (InstantiationException ex) { Logger.getLogger(this.getClass().getName()).log(Level.SEVERE, null, ex); } catch (IllegalAccessException ex) { Logger.getLogger(this.getClass().getName()).log(Level.SEVERE, null, ex); } return null; }Le problème est que lorsque j'appuie sur le bouton "Create", j'obtiens l'erreur suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 public void saveNew(ActionEvent event) { String msg = ResourceBundle.getBundle("/Bundle").getString(itemClass.getSimpleName() + "Created"); persist(AbstractController.PersistAction.CREATE, msg); if (!isValidationFailed()) { items = null; // Invalidate list of items to trigger re-query. } }
je comprends bien que l'instance Personne est nulle mais comment je fais si je veux l'instancier dans ma méthode "prepareCreate2" ???
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 javax.el.PropertyNotFoundException: /Proyectos/Formulario/index.xhtml @23,227 value="#{personaController.selected.persona}": Target Unreachable, 'null' returned null at com.sun.faces.facelets.el.TagValueExpression.getType(TagValueExpression.java:100) at org.primefaces.util.ComponentUtils.getConverter(ComponentUtils.java:124) at org.primefaces.renderkit.InputRenderer.getConvertedValue(InputRenderer.java:183) at javax.faces.component.UIInput.getConvertedValue(UIInput.java:1046) at javax.faces.component.UIInput.validate(UIInput.java:976) at javax.faces.component.UIInput.executeValidate(UIInput.java:1249) at javax.faces.component.UIInput.processValidators(UIInput.java:712) at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1261) at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1261) at javax.faces.component.UIForm.processValidators(UIForm.java:253) at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1261) at javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:1195) at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:76) at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:646) at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:318) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:734) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:673) at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:174) at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:357) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:260) at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:188) at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:191) at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:168) at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:189) at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119) at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:288) at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:206) at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:136) at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:114) at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77) at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:838) at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:113) at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:115) at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:55) at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:135) at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:564) at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:544) at java.lang.Thread.run(Thread.java:722) Caused by: javax.el.PropertyNotFoundException: Target Unreachable, 'null' returned null at com.sun.el.parser.AstValue.getTarget(AstValue.java:192) at com.sun.el.parser.AstValue.getType(AstValue.java:86) at com.sun.el.ValueExpressionImpl.getType(ValueExpressionImpl.java:201) at org.jboss.weld.el.WeldValueExpression.getType(WeldValueExpression.java:93) at com.sun.faces.facelets.el.TagValueExpression.getType(TagValueExpression.java:98)
Toutes les suggestions sont les bienvenues
Partager