summaryrefslogtreecommitdiffstats
path: root/server/src
diff options
context:
space:
mode:
Diffstat (limited to 'server/src')
-rw-r--r--server/src/com/vaadin/data/util/converter/StringToDoubleConverter.java5
-rw-r--r--server/src/com/vaadin/server/AbstractCommunicationManager.java3
-rw-r--r--server/src/com/vaadin/ui/LoginForm.java11
3 files changed, 18 insertions, 1 deletions
diff --git a/server/src/com/vaadin/data/util/converter/StringToDoubleConverter.java b/server/src/com/vaadin/data/util/converter/StringToDoubleConverter.java
index 1c95d4fceb..ef14549182 100644
--- a/server/src/com/vaadin/data/util/converter/StringToDoubleConverter.java
+++ b/server/src/com/vaadin/data/util/converter/StringToDoubleConverter.java
@@ -75,6 +75,11 @@ public class StringToDoubleConverter implements Converter<String, Double> {
throw new ConversionException("Could not convert '" + value
+ "' to " + getModelType().getName());
}
+ if (parsedValue == null) {
+ // Convert "" to null
+ return null;
+ }
+
return parsedValue.doubleValue();
}
diff --git a/server/src/com/vaadin/server/AbstractCommunicationManager.java b/server/src/com/vaadin/server/AbstractCommunicationManager.java
index 0832a1a33a..19b0ac2aee 100644
--- a/server/src/com/vaadin/server/AbstractCommunicationManager.java
+++ b/server/src/com/vaadin/server/AbstractCommunicationManager.java
@@ -2733,6 +2733,9 @@ public abstract class AbstractCommunicationManager implements Serializable {
}
if (ui != null) {
ui.setLastHeartbeatTimestamp(System.currentTimeMillis());
+ // Ensure that the browser does not cache heartbeat responses.
+ // iOS 6 Safari requires this (#10370)
+ response.setHeader("Cache-Control", "no-cache");
} else {
response.sendError(HttpServletResponse.SC_NOT_FOUND, "UI not found");
}
diff --git a/server/src/com/vaadin/ui/LoginForm.java b/server/src/com/vaadin/ui/LoginForm.java
index 15c917e454..c75326b99c 100644
--- a/server/src/com/vaadin/ui/LoginForm.java
+++ b/server/src/com/vaadin/ui/LoginForm.java
@@ -157,7 +157,9 @@ public class LoginForm extends CustomComponent {
+ "</head><body onload='setTarget();' style='margin:0;padding:0; background:transparent;' class=\""
+ ApplicationConstants.GENERATED_BODY_CLASSNAME
+ "\">"
- + "<div class='v-app v-app-loginpage' style=\"background:transparent;\">"
+ + "<div class='v-app v-app-loginpage "
+ + getUIThemeClassName()
+ + "' style=\"background:transparent;\">"
+ "<iframe name='logintarget' style='width:0;height:0;"
+ "border:0;margin:0;padding:0;display:block'></iframe>"
+ "<form id='loginf' target='logintarget' onkeypress=\"submitOnEnter(event)\" method=\"post\">"
@@ -174,6 +176,13 @@ public class LoginForm extends CustomComponent {
+ "</span></span></div></div></form></div>" + "</body></html>";
}
+ private String getUIThemeClassName() {
+ if (getUI() != null) {
+ return getUI().getTheme();
+ }
+ return "";
+ }
+
/**
* This event is sent when login form is submitted.
*/