Looking back in time, I found the problem. It was Java autoboxing wackiness which happened to manifest itself @ the wrong time. There is discussion about it on http://bexhuff.com/java-autoboxing-wackiness.
Figured someone might be interested. -J On Friday, January 14, 2011 7:57:30 PM UTC+1, Jirka wrote: > > Hello all, > > I have a strange problem with my code not working when deployed even > though it works fine in my dev environment (Eclipse GWT plugin). It > is a simple widget in a dialog box that gets opened when one clicks on > a hyperlink in maps info window. > > The widget has one ListBox and TextArea and when one switches item in > the ListBox it updates the TextArea with corresponding text and saves > the text from the TextArea that was selected before. The ListBox gets > its data via RPC from app engine on load and the data for the TextArea > is passed to the widget constructor on creation, previously also > fetched via RPC from the app engine. The ListBox represents area of > study, while the TextArea is a goal for that area. > > My problem is that when deployed, switching items in the ListBox does > not switch the text at all. I debug this using Window.alert > onChange() and I know that the data the dialog gets from the app > engine are correct and are all there on load from another > Window.alert() debug box I put in. However when I switch items, the > Window.alert debug box says there are no goals set for that area of > study, even though when the dialog first loads, the debug box shows > they are all there. The first item selected does have correct text on > load but the rest is just gone. The ListBox data is also fine. Also > the data is there because it is also correctly displayed in the info > window. What is wrong? Where is the problem since it works fine in > my dev. environment but not when deployed? > > Here is the code for the form > > public class DotaznikForm extends Composite { > > private final OkruhyServiceAsync okruhyService = GWT > .create(OkruhyService.class); > private final Dotaznik dotaznik; > private final List<Okruh> okruhy = new LinkedList<Okruh>(); > private VerticalPanel vp = new VerticalPanel(); > private final TextArea textCile = new TextArea(); > private final ListBox okruhyListBox = new ListBox(); > private int lastSelected; > > DotaznikForm(Dotaznik d) { > this.dotaznik = d; > > ((ServiceDefTarget) okruhyService) > > .setServiceEntryPoint("/volebnicile/okruhyService"); > > okruhyService.getOkruhy(new AsyncCallback<Okruh[]>() { > > @Override > public void onSuccess(Okruh[] result) { > // The first debug alert on load > StringBuffer s=new StringBuffer("Number of > cilu: > "+dotaznik.getCile().size()+"\n\n"); > for (Cil c:dotaznik.getCile()) > s.append("ID: "+c.getId()+" ---> > "+c.getTextCile()+"\n"); > Window.alert(s.toString()); > > for (Okruh o : result) { > > okruhyListBox.addItem(o.getPopisOkruhu()); > > } > okruhy.addAll(Arrays.asList(result)); > okruhyListBox.setSelectedIndex(0); > if (!dotaznik.getCile().isEmpty()) { > > textCile.setText(getCilByOkruh(getSelectedOkruh()).getTextCile()); > } > > okruhyListBox.setWidth("50em"); > > textCile.setSize("50em", "30em"); > > okruhyListBox.addClickHandler(new > ClickHandler() { > @Override > public void onClick(ClickEvent > event) { > > setLastSelected(okruhyListBox.getSelectedIndex()); > > } > }); > > okruhyListBox.addChangeHandler(new > ChangeHandler() { > @Override > public void onChange(ChangeEvent > event) { > saveDotaznik(); > updateDotaznikForm(); > } > }); > > vp.setSpacing(5); > vp.add(okruhyListBox); > vp.add(textCile); > } > > @Override > public void onFailure(Throwable caught) { > Window.alert("getOkruhy:There was an error > getting data from > server"); > } > }); > > > initWidget(vp); > } > > private void updateDotaznikForm() { > Cil c = getCilByOkruh(getSelectedOkruh()); > > if (c != null) { > Window.alert("Cil: "+c.getTextCile()+"\nOkruh: > "+getSelectedOkruh().getPopisOkruhu()); > textCile.setText(c.getTextCile());} > else { > Window.alert("Pro Okruh > "+getSelectedOkruh().getPopisOkruhu()+"neni > definovan zadny cil"); > textCile.setText("");} > } > > private Cil getCilByOkruh(Okruh o) { > if (dotaznik.getCile() != null) > for (Cil c : dotaznik.getCile()) > if (c.getOkruhKey() == o.getId()) > return c; > return null; > } > > private Okruh getOkruhByPopis(String popis) { > for (Okruh o : okruhy) > if (o.getPopisOkruhu().equals(popis)) > return o; > return null; > } > > private Okruh getSelectedOkruh() { > return > getOkruhByPopis(okruhyListBox.getItemText(okruhyListBox > .getSelectedIndex())); > } > > private void saveDotaznik() { > Okruh o = > getOkruhByPopis(okruhyListBox.getItemText(getLastSelected())); > if (this.dotaznik.getCile().isEmpty() && ! > textCile.getText().equals("")) > this.dotaznik.addCil(new Cil(textCile.getText(), > o)); > else { > Cil c = getCilByOkruh(o); > if (c == null && !textCile.getText().equals("")) > this.dotaznik.addCil(new > Cil(textCile.getText(), o)); > else if (c != null && > !textCile.getText().equals("")) > c.setTextCile(textCile.getText()); > else > dotaznik.deleteCil(c); > } > } > > protected void closeDotaznik() { > if (textCile.getText().equals("")) > > dotaznik.deleteCil(getCilByOkruh(getSelectedOkruh())); > > else { > Cil c=getCilByOkruh(getSelectedOkruh()); > if (c==null) > dotaznik.addCil(new > Cil(textCile.getText(), getSelectedOkruh())); > else > c.setTextCile(textCile.getText()); > } > } > > protected Dotaznik getDotaznik() { > return this.dotaznik; > } > > private void setLastSelected(int i) { > lastSelected = i; > } > > private int getLastSelected() { > return lastSelected; > } > } > > and here is a code that creates it and shows it in a dialog > > @Override > public void onClick(ClickEvent event) { > ds.getDotaznik(o.getDotaznikId(), new > AsyncCallback<Dotaznik>() { > > @Override > public void onFailure(Throwable caught) { > Window.alert("getDotaznik: There > was an error getting data from > server"); > } > > @Override > public void onSuccess(Dotaznik result) { > DotaznikForm dotaznikForm; > if (result == null) > dotaznikForm = new > DotaznikForm(new Dotaznik()); > else > dotaznikForm = new > DotaznikForm(result); > > VerticalPanel dotaznikPanel = new > VerticalPanel(); > HorizontalPanel buttonPanel = new > HorizontalPanel(); > > Button closeButton = new > Button("Ukoncit"); > > closeButton.addClickHandler(new > CloseClickHandler(o, > dotaznikForm)); > > buttonPanel.add(closeButton); > dotaznikPanel.add(dotaznikForm); > dotaznikPanel.add(buttonPanel); > > dotaznikDialog.setWidget(dotaznikPanel); > > dotaznikDialog.center(); > dotaznikDialog.show(); > } > }); > } > } > > Thanks in advance for any help. > > -Jirka > > > > > > -- You received this message because you are subscribed to the Google Groups "Google Web Toolkit" group. To view this discussion on the web visit https://groups.google.com/d/msg/google-web-toolkit/-/NRXL0khVnGoJ. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.