Bonjour, je m'essaye à Java EE 6 et j'ai l'erreur 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 exception javax.servlet.ServletException: javax.persistence.TransactionRequiredException: Transaction is required to perform this operation (either use a transaction or extended persistence context) javax.faces.webapp.FacesServlet.service(FacesServlet.java:606) org.jboss.weld.servlet.ConversationPropagationFilter.doFilter(ConversationPropagationFilter.java:67) cause mère javax.faces.el.EvaluationException: javax.persistence.TransactionRequiredException: Transaction is required to perform this operation (either use a transaction or extended persistence context) javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:102) com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102) javax.faces.component.UICommand.broadcast(UICommand.java:315) javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794) javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259) com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81) com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) javax.faces.webapp.FacesServlet.service(FacesServlet.java:593) org.jboss.weld.servlet.ConversationPropagationFilter.doFilter(ConversationPropagationFilter.java:67)
j'ai cette erreur lorsque j'essaye d'enregistrer en base un widget créer, voici mon code:
Widget.java
Mon controleur.java
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 package knowledge.tuto1; import java.io.Serializable; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; @Entity public class Widget implements Serializable { private Long id; private String partNumber; private String name; private String description; @Id @GeneratedValue public Long getId() { return id; } public void setId(Long id) { this.id = id; } // demonstrates a column name override @Column(name = "partno") public String getPartNumber() { return partNumber; } public void setPartNumber(String partNumber) { this.partNumber = partNumber; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } /** Default value included to remove warning. Remove or modify at will. */ private static final long serialVersionUID = 1L; }
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 package knowledge.tuto1; import javax.annotation.PostConstruct; import javax.ejb.TransactionManagement; import javax.enterprise.inject.Model; import javax.inject.Inject; import javax.persistence.EntityManager; import javax.validation.constraints.Digits; import javax.validation.constraints.NotNull; import javax.validation.constraints.Pattern; import org.hibernate.validator.constraints.Email; import org.hibernate.validator.constraints.NotEmpty; public @Model class Controleur { private Widget widget; private final String text = ""; private String letters; private String numbers; private String email; @Inject @WidgetRepository EntityManager widgetRepository; public Controleur() { } @PostConstruct public void initialize() { widget = new Widget(); System.out .println(this.getClass().getSimpleName() + " was constructed"); } public String getText() { return text; } public Widget getWidget() { return widget; } public void setWidget() { widgetRepository.persist(widget); } }
et mon fichier xhtml
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 <?xml version="1.0" encoding="UTF-8"?> <ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" template="/WEB-INF/templates/default.xhtml"> <ui:define name="content"> <h1>Hello World!</h1> <p>Your CDI bean <code>HelloWorld</code> says <span style="color: blue;">#{controleur.text}</span> using the Unified EL.</p> <h:form id="bv"> <h2>Bean Validation examples</h2> <p>Enforces annotation-based constraints defined on the model class.</p> <table> <tr> <th style="text-align: right;"> <h:outputLabel for="part" value="Partner:"/> </th> <td> <h:inputText id="part" value="#{controleur.widget.partNumber}"/> <h:message for="part" errorClass="invalid"/> </td> </tr> <tr> <th style="text-align: right;"> <h:outputLabel for="name" value="Name:"/> </th> <td> <h:inputText id="name" value="#{controleur.widget.name}"/> <h:message for="name" errorClass="invalid"/> </td> </tr> <tr> <th style="text-align: right;"> <h:outputLabel for="desc" value="Description:"/> </th> <td> <h:inputText id="desc" value="#{controleur.widget.description}"/> <h:message for="desc" errorClass="invalid"/> </td> </tr> </table> <p> <h:commandButton id="check" action="#{controleur.setWidget()}" value="Check values"/> <h:outputText value=" All clear!" rendered="#{facesContext.postback and empty facesContext.messageList}" style="color: green;"/> </p> </h:form> <h2>Widgets</h2> <h:dataTable var="_widget" value="#{widgets}"> <h:column> <f:facet name="header">Id</f:facet> #{_widget.id} </h:column> <h:column> <f:facet name="header">Part Number</f:facet> #{_widget.partNumber} </h:column> <h:column> <f:facet name="header">Name</f:facet> #{_widget.name} </h:column> <h:column> <f:facet name="header">Description</f:facet> #{_widget.description} </h:column> </h:dataTable> </ui:define> </ui:composition>
erreur lors de l'appel à la methode setWidget()
merci beaucoup.
Partager