我有一个发送 POST 请求的基本 html 页面。在 vaadin 7 中,我正在执行以下操作来检索 POST
request.getParameter("username");
执行此操作时我得到一个空值,但是当我在 Vaadin 6 中执行完全相同的操作时,我得到了用户名的实际值(例如“john”)。此外,如果我在我的 html 代码中将方法更改为“GET”,我没有问题并获得用户名的值(使用相同的代码)。
这是 Vaadin 7 中的错误,还是我必须以不同的方式实现它。
我不确定这是否能解决问题,但在某些情况下,类似的方法对我有用。Vaadin 7
使用VaadinRequest
while vaadin 6
HttpServletRequest
。您可以提取HttpServletRequest
fromVaadinRequest
并使用它来获取参数。如果请求是类型VaadinRequest
:
VaadinServletRequest vsRequest = (VaadinServletRequest)request;
HttpServletRequest hsRequest = vsRequest.getHttpServletRequest();
String un = hsRequest.getParameter("username");
希望它有帮助。
我遇到过同样的问题。调试显示 Vaadin 7 在内部执行了两个请求。第一个请求包含来自 URL 和已发布表单的所有参数。第二个,可能是内部重定向,具有来自 URL 的相同参数以及 Vaadin UI 相关参数。
所以基本上要捕获您发布的参数,您可以添加RequestHandler ,从第一个请求中获取它并可能将其保存在某个地方,例如在会话中,然后在您的组件中读取这些存储的数据。这个解决方案对我有用。
我希望,它会帮助你得到它。
VaadinRequest vaadinRequest = VaadinService.getCurrentRequest();
logger.error("User Name : "+vaadinRequest.getUserPrincipal().getName()); (OR)
logger.error("User Name : "+vaadinRequest.getRemoteUser());