Bonjour à tous,
j'ai un problème d'exécution qui me dérrange il ya quelque jours et dont je voudrais quelqu'un qui puisse m'aider.
j'ai implémenté une page .xhtml contenant une balise <a4j:outputpanel> et un panelMenu. le outputPanel est bindé (par l'attribut binding) vers la class htmlA4joutputPanel de mon backing bean. Lorsque j'execute l'application la page d'acceuil s'affiche sans problème, mais dés que je clique sur un panelMenuItem implémenté dans la même page, un message d'erreur s'affiche indiquant que la cause provient bien de l'outputPanel bindé.
j'ai éssayé à résoudre le problème et j'arrive pas à résoudre le problème.
ca me fait vraiment un grand palisir si quelqu'un peut m'aider.
je vous transmet ma page .xhtml
je vous transmet mon backingBean
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 <h:form id="customerForm"> <h:panelGrid columns="2" columnClasses="cols" width="100%" border="1" cellspacing="0"> <rich:panelMenu style="width:200px" mode="server" iconExpandedGroup="disc" iconCollapsedGroup="disc" iconExpandedTopGroup="chevronUp" iconGroupTopPosition="right" iconCollapsedTopGroup="chevronDown" iconCollapsedTopPosition="right" > <rich:panelMenuGroup label="Products"> <c:forEach items="#{customerAction.searchOrderLine()}" var="prod" varStatus="s"> <!-- le panelMenuitem updatele outputPanel par la fonction upadateOutputPanel() et fait un listener qui marche bien--> <rich:panelMenuItem label="#{prod.name}" actionListener="#{customerAction.searchServiceProduct}" action="#{customerAction.updateOutputPanel()}"> <f:param id="id#{s.index}" name="productId" value="#{prod.productId}"/> </rich:panelMenuItem> </c:forEach> </rich:panelMenuGroup> </rich:panelMenu> <a4j:outputPanel id="outputPanel" rendered="true" binding= "#{customerAction.outputPanel}"> </a4j:outputPanel> </h:panelGrid> </h:form>
pourtant que j'ai presque mis tout le contenu de la methode updateOutputpanel() en commentaire, l'erreur reste la même et l'erreur indique que la faute vient de l'ejb (EJBException),
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 @Stateful @Scope(ScopeType.SESSION) @Name("customerAction") public class CustomerActionBean implements CustomerActionLocal { private HtmlAjaxOutputPanel outputPanel = new HtmlAjaxOutputPanel(); public void updateOutputPanel() { HtmlDataTable dataTable = new HtmlDataTable(); HtmlColumn columnName, columnAmount; dataTable.setValue("#{characteristicServiceProduct}"); dataTable.setVar("chSePr"); columnName = new HtmlColumn(); HtmlOutputText outputTextName = new HtmlOutputText(); outputTextName.setValue("#{chSePr.characteristic.name}"); log.info("name =#0",outputTextName.getValue() ); columnName.getChildren().add(outputTextName); columnAmount = new HtmlColumn(); HtmlOutputText outputTextAmount = new HtmlOutputText(); outputTextAmount.setValue("#{chSePr.amount}"); log.info("amount =#0",outputTextAmount.getValue() ); columnAmount.getChildren().add(outputTextAmount); dataTable.getChildren().add(columnName); dataTable.getChildren().add(columnAmount); getOutputPanel().getChildren().add(dataTable); getOutputPanel().setRendered(false); outputPanel.saveState(FacesContext.getCurrentInstance()); }
l'erreur est la suivante
je tient à présicer aussi, que si j'enlève le binding de outputPanel l'exécution fonction sans problème et même le panelMenuItem actionListener fonctione bien et je reçois les message de log avec les bonne variable
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 javax.ejb.EJBException at com.sun.ejb.containers.BaseContainer.processSystemException(BaseContainer.java:3869) at com.sun.ejb.containers.BaseContainer.completeNewTx(BaseContainer.java:3769) at com.sun.ejb.containers.BaseContainer.postInvokeTx(BaseContainer.java:3571) ..... Caused by: org.jboss.seam.RequiredException: @In attribute requires non-null value: customerAction.em at org.jboss.seam.Component.getValueToInject(Component.java:2168) at org.jboss.seam.Component.injectAttributes(Component.java:1598) at org.jboss.seam.Component.inject(Component.java:1416) javax.el.ELException: /pages/users/Customer.xhtml @69,116 binding="#{customerAction.outputPanel}": javax.ejb.EJBException at com.sun.facelets.el.TagValueExpression.setValue(TagValueExpression.java:101) .... Caused by: javax.ejb.EJBException at com.sun.ejb.containers.BaseContainer.processSystemException(BaseContainer.java:3869) at com.sun.ejb.containers.BaseContainer.completeNewTx(BaseContainer.java:3769)
merci çà tous
Partager