I am using Vaadin 6.8.15, and Chrome Version 39.0.2171.71 m.
Any help that you can provide me on this issue is greatly appreciated.
When viewing a page in chrome, and the zoom is set to something like 110%, the browser sends variable update for an integer variable, but specifies a float value.
The following is an excerpt of what Chrome posts to the server. For simplicity, I’ve replaced the unicode characters with something a little more readable:
- Group Separator ‘/u001D’
- Record Separator ‘/u001E’
- Unit Separator ‘/u001F’
I’ve highlighted / bolded the variable update that is causing the issue.
Here’s the stack trace:
Trace: java.lang.RuntimeException: Could not convert variable “scrollTop” for com.vaadin.ui.Window (PID3394)
at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.decodeVariable(AbstractCommunicationManager.java:1578)
at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.handleVariableBurst(AbstractCommunicationManager.java:1384)
at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.handleVariables(AbstractCommunicationManager.java:1329)
at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.doHandleUidlRequest(AbstractCommunicationManager.java:761)
at com.vaadin.terminal.gwt.server.CommunicationManager.handleUidlRequest(CommunicationManager.java:325)
at com.vaadin.terminal.gwt.server.AbstractApplicationServlet.service(AbstractApplicationServlet.java:501)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
Thank you! Any help or advice is greatly appreciated!
[code]
public class CorrectInvalidIntegerValues extends HttpServletRequestWrapper
{
public static final String RECORD_SEPARATOR = “\u001e”;
public static final String UNIT_SEPARATOR = “\u001f”;
No small feat, that. While I’ve created a Vaadin Widget using GWT before, I don’t quite understand how the UIDL is manufactured. I’m not even sure if that’s a GWT item, or a Vaadin specific thing. Do you happen to know?
Looking at the stack trace it looks like something Vaadin does on top of GWT, e.g. com.vaadin.terminal.gwt.server.AbstractCommunicationManager.doHandleUidlRequest()
The workaround have served us well so far, but now I’ve started getting “null” instead of some integers…
ava.lang.RuntimeException: Could not convert variable “c” for se.softhouse.garden.orchid.vaadin.OrchidInputField (PID125)
at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.decodeVariable(AbstractCommunicationManager.java:1578)
at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.handleVariableBurst(AbstractCommunicationManager.java:1384)
at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.handleVariables(AbstractCommunicationManager.java:1329)
at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.doHandleUidlRequest(AbstractCommunicationManager.java:761)
at com.vaadin.terminal.gwt.server.CommunicationManager.handleUidlRequest(CommunicationManager.java:325)
at com.vaadin.terminal.gwt.server.AbstractApplicationServlet.service(AbstractApplicationServlet.java:501)
...
Caused by: java.lang.NumberFormatException: For input string: “null”
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:580)
at java.lang.Integer.valueOf(Integer.java:766)
at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.convertVariableValue(AbstractCommunicationManager.java:1601)
at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.decodeVariable(AbstractCommunicationManager.java:1571)
... 40 more
The culprit UIDL looks something like this, with Java escaping: