无法在vaadin 7中获取请求的用户名

时间:2013-10-03 18:08:46

标签: java html http vaadin

我有一个发送POST请求的基本html页面。在vaadin 7中,我正在执行以下操作来检索POST

request.getParameter("username"); 

当我这样做时,我得到一个null,但是当我在Vaadin 6中做同样的事情时,我得到了用户名的实际值(例如“john”)。此外,如果我在我的HTML代码中将我的方法更改为“GET”,我没有问题并获得用户名的值(使用相同的代码片段)。

这是Vaadin 7中的错误,还是我必须以不同的方式实现它。

3 个答案:

答案 0 :(得分:1)

我不确定这是否能解决问题,但在某些情况下,类似的方法对我有用。 Vaadin 7使用VaadinRequestvaadin 6 HttpServletRequest。您可以从HttpServletRequest中提取VaadinRequest,然后使用它来获取参数。如果请求的类型为VaadinRequest

VaadinServletRequest vsRequest = (VaadinServletRequest)request;
HttpServletRequest hsRequest = vsRequest.getHttpServletRequest();
String un = hsRequest.getParameter("username"); 

希望它能解决。

答案 1 :(得分:1)

我有同样的问题。调试显示Vaadin 7内部执行两个请求。第一个请求包含来自URL和发布表单的所有参数。第二个,可能是内部重定向,具有来自URL和Vaadin UI相关参数的相同参数。

因此,基本上要捕获您发布的参数,您可以添加RequestHandler,从第一个请求中获取它并可能将其保存在某个地方,例如在会话中,然后在您的组件中读取此存储的数据。这个解决方案适合我。

答案 2 :(得分:0)

我希望,它会帮助你获得它。

VaadinRequest vaadinRequest = VaadinService.getCurrentRequest();
logger.error("User Name : "+vaadinRequest.getUserPrincipal().getName()); (OR)
logger.error("User Name : "+vaadinRequest.getRemoteUser());