Salut,
J'ai une remontée d'erreur fréquente sur mon application GWT.
D'après le stacktrace elle survient lors du constructeur de la classe CrossingRow, qui correspond à un composant graphique créé via un UiBinder.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Class$S241: Cannot find element with id "gwt-uid-76". Perhaps it is not attached to the document body. at com.google.gwt.uibinder.client.LazyDomElement.$get(LazyDomElement.java:66) at com.xxxxx.widgets.CrossingRow_CrossingRowUiBinderImpl$Widgets.$build_f_HTMLPanel1(CrossingRow_CrossingRowUiBinderImpl.java:83) at com.xxxxx.widgets.CrossingRow.CrossingRow(CrossingRow.java:41) at com.xxxxx.widgets.CrossingsGridsWidget.$buildCell(CrossingsGridsWidget.java:174)
Le XML de l'UiBinder correspond à ceci (et je n'y vois rien d'extraordinaire) :
Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 <!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent"> <ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" xmlns:g="urn:import:com.google.gwt.user.client.ui"> <g:HTMLPanel styleName="crossingRow"> <div ui:field="bestprice"></div> <g:HTMLPanel styleName="price" ui:field="pricePanel"> <input type="radio" ui:field="radio" /> <span ui:field="price"></span> </g:HTMLPanel> <div class="hours" ui:field="hours"></div> <g:FlowPanel styleName="icons" ui:field="icons" /> </g:HTMLPanel> </ui:UiBinder>
Le code Java de la classe étant lui aussi relativement simple, puisque je ne fait que remplir le contenu HTML des éléments :
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 public class CrossingRow extends Composite { private static CrossingRowUiBinder uiBinder = GWT .create(CrossingRowUiBinder.class); interface CrossingRowUiBinder extends UiBinder<Widget, CrossingRow> { } @UiField InputElement radio; @UiField Element bestprice; @UiField HTMLPanel pricePanel; @UiField Element price; @UiField Element hours; @UiField FlowPanel icons; public CrossingRow(String name, Crossing c, PriceItem item, Currency currency, boolean isBestPrice) { initWidget(uiBinder.createAndBindUi(this)); this.radio.setName(name); if (isBestPrice) { this.bestprice.addClassName("bestprice"); this.bestprice.setInnerHTML(ClientFactory.INSTANCE.getMessages() .Label_TarifMoinsCher()); } if (item != null && item.getAmount() != null) { this.price.setInnerHTML(UtilsUI.formatAmount(item.getAmount(), currency)); } this.hours.setInnerHTML("<strong>" + Dates.formatTime(c.getDeparture()) + "</strong> - " + Dates.formatTime(c.getArrival())); if (c.getAvailability()!=Availability.OK) { this.pricePanel.add(Crossings.availability(c)); } Crossings.promotions(c, this.icons); Crossings.advantages(c, this.icons); } }
Mais le plus curieux c'est que je ne reçois ce genre d'erreur qu'en provenance de navigateur sous Android 2.3...
Si quelqu'un a une idée de l'origine de cela...
a++
Partager