我使用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改为不同的东西(因为我之前使用过它而使用过)?