从Vaadin重定向到HttpServlet

时间:2016-03-07 14:48:27

标签: java servlets vaadin

我使用HttpServlets和applet制作的非常古老的web应用程序(15年以上),我想用Vaadin Tree(现在出现Tree)替换用作菜单的applet(它具有到不同HttpServlet的链接)。但现在我有问题:当用户点击trenode时,它应该重定向到某个HttpServlet。 所有HttpServlet都没有在web.xml中注册,它们通过html标签被称为一个。 由于服务器限制,我只能使用Vaadin 6.

tree.addListener(new ItemClickListener() {
     @Override
     public void itemClick(ItemClickEvent event) {
         if(event.getItemId().equals("Report")) {
             //redirect to HttpServlet 
         }
     }
});

首先,我尝试了疯狂的想法:实现了HttpServletRequestListener,并在onRequestEnd()中重定向到HttpServlet,但这不起作用。

public void onRequestEnd(HttpServletRequest request, HttpServletResponse response) {
     try {
          response.sendRedirect(redirectTo);
     } catch (IOException e) {
            e.printStackTrace();
     }
}

我的第二个想法是使用

setLogoutURL("/servleturl"); 
getMainWindow().getApplication().close();

但它给出了错误:

在文件系统或类加载器中找不到请求的资源[VAADIN / widgetsets / com.vaadin.terminal.gwt.DefaultWidgetSet / servleturl]。将widgetset和/或主题JAR添加到类路径或将文件添加到WebContent / VAADIN文件夹。

然后我尝试使用jsp:

 <html>
 <head>
    <title>JSP include with parameters example</title>
 </head>
 <body>
    REDIRECT TO SERVLET 
    name="<%= request.getParameter("name") %>"
    <%
        String name = request.getParameter("name");
        if(name != null &&  name!="")
        {
            response.sendRedirect(name);
        }
     %>
</body>
</html>

并致电

setLogoutURL("../../../redirect.jsp?name=asd");

它只返回HTTP 404,但服务器显示inintialization成功。

然后我尝试在web.xml中注册jsp作为Servlet并更改setLougoutURL但错误与上面相同。

当我将redirect.jsp复制到WebContent / VAADIN时更改调用

setLogoutURL("../../redirect.jsp?name=asd");

页面显示

REDIRECT TO SERVLET name="" 

由于参数名称为空,因此jsp不进行重定向。

服务器是WAS 6.1,如果它可能是问题的原因。

有关如何重定向到servlet的任何想法?我已经没有任何想法了。但也许将Vaadin改为不同的东西(因为我之前使用过它而使用过)?

0 个答案:

没有答案