Icefaces + Probleme avec acces concurrent sur la même fenetre!
Salut,
J'ai un problème d'accès concurrent à mon programme. C'est une application développé en Icefaces, quand je lance mon application toute seule, je teste toutes les structures il y a aucun problème.
En gros j'ai des structures qui gére l'affichage d'une dataTable. Chaque ligne de la dataTable peut ouvrir une popup ou avoir des childs, qu'on peut développer grâce au +.
L'utilisateur peut aussi ouvrir la même fenêtre en full screen grâce à un bouton adéquat. C'est là où les problèmes commencent. en effet, de temps en temps qu'on je clique sur un champs de ma dataTable pour ouvrir une popup, j'ai ce genre d'exception
Code:
javax.faces.FacesException: Problem in renderResponse: /OrderBook.jspx @272,80 rendered="#{orderBook.expandedable}": Error getting property 'expandedable' from bean of type com.ulnet.memberarea.web.OrderBook.OrderBookBean: java.lang.IllegalArgumentException
le code qui correspond à cette exception est :
Code:
1 2 3 4 5 6 7 8 9 10
| public boolean getExpandedable()
{
if ( rowDataModel != null
&& rowDataModel.getRowData() instanceof Tblorder) {
Tblorder order = (Tblorder)rowDataModel.getRowData();
if ( order != null)
return order.isExpanded();
}
return false;
} |
J'ai essayé de rajoute des synchronized dans toutes les méthodes susceptibles d'accès concurrents mais le problème persiste. A vrai dire je comprend même pas pour quoi il y aurait problème d'accès concurrent, car je me contente de lire des données ...
Aussi j'ai un autre probléme cette fois avec le dataPaginator, qui marche plus, (dans la fenêtre full screen) .
Voici le code de ma popup qui me cause le plus de problèmes
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
| <ice:panelPopup visible="#{orderBook.visiblePopupTrade}"
draggable="true"
styleClass="icePnlPop3"
modal="false">
<f:facet name="header">
<ice:panelGrid
style = "text-align : right;"
width = "100%" cellpadding = "0"
cellspacing="0" columns = "1" >
<ice:commandButton image="img/closePopup.gif"
action = "#{orderBook.closeTradePopup}"
title = "Close this draggable popup"
immediate = "true" />
</ice:panelGrid>
</f:facet>
<f:facet name="body">
<ice:panelGroup >
<ice:panelGroup style="width:710px">
<ice:panelGrid width="200px"
cellpadding="0"
cellspacing="0">
<ice:dataTable value="#{orderBook.rowDataModelTrades}"
var="trade"
id="tradeTable"
rows="10" cellpadding="0"
styleClass="tradeTable"
>
<ice:columns
value="#{orderBook.headerNameTrades}"
var="column"
rendered="true">
<f:facet name="header">
<ice:outputText style="text-decoration:underline;color:gray; "
value="#{column}" />
</f:facet>
<ice:panelGroup >
<ice:outputText value="#{orderBook.cellValueTrades}" />
</ice:panelGroup>
</ice:columns>
</ice:dataTable>
</ice:panelGrid>
</ice:panelGroup>
<center>
<br/>
<ice:dataPaginator id="tradepaginator" for="tradeTable"
binding="#{orderBook.tradePaginator}"
paginator="true" fastStep="3"
paginatorMaxPages="4" renderFacetsIfSinglePage="false"
styleClass="OLPgr">
<f:facet name="first">
<ice:graphicImage url="/img/first_btn.jpg"
styleClass="OLPgrScrBtn" title="First Page" />
</f:facet>
<f:facet name="last">
<ice:graphicImage url="/img/last_btn.jpg"
styleClass="OLPgrScrBtn" title="Last Page" />
</f:facet>
<f:facet name="previous">
<ice:graphicImage
url="/img/previous_btn.jpg"
styleClass="OLPgrScrBtn" title="Previous Page" />
</f:facet>
<f:facet name="next">
<ice:graphicImage url="/img/next_btn.jpg"
styleClass="OLPgrScrBtn" title="Next Page" />
</f:facet>
</ice:dataPaginator>
</center>
</ice:panelGroup>
</f:facet>
</ice:panelPopup> |
Ah oui j'ai déja le concurrentDOMViews à true dans mon web.xml
Si vous avez des remarques n'hésitez à me faire part.
Merci beaucoup