我正在尝试使用其Neo4j附加组件在Heroku上开发Neo4J Cloud应用程序。我仍在尝试几种功能,因此它只是一个演示应用程序,但我遇到了一个问题。
我的应用程序是这样构建的:
我有一个带有表格的主页,该表格显示了连接到参考节点的所有节点。在此主页上,有一个添加随机节点的链接。
我的servlet中定义了两个动作,它们执行以下操作:
回家
request.setAttribute("testuser", "test");
DataAccess da = new DataAccess();
request.setAttribute("NodeBeans", da.getAllNodes());
request.setAttribute("pageheader", "header");
request.setAttribute("pagecontent", "home");
request.setAttribute("pagefooter", "footer");
request.getRequestDispatcher("/master.jsp").forward(request, response);
最后三个参数是master.jsp中包含的文件名(不带jsp),使用。
Addnode.do的功能完全相同,只是它更改了testuser的值,并且在设置NodeBeans属性之前,它执行了以下操作:
da.createRandomNode();
这基本上会为数据库创建一个随机节点。
在本地,这一切都像魅力一样。当我推到Heroku时,出现了问题。
当我打开时,它仍然会打开“ bla.herokuapps.com/home.do”,这很好。它显示了节点表。当我单击添加节点的链接时,URL确实更改为应添加节点的“ bla.herokuapp.com/addnode.do”,但实际上并没有。但是,testuser属性也随“ addnode.do”操作而更改。当URL设置为“ bla.herokuapps.com/addnode.do”时刷新页面时,它确实添加了一个节点,并在表中显示了该新节点。
因此,页面之间的整体切换效果很好。唯一的问题是,在刷新页面之前,单击addnode链接不会在Neo4j数据库中创建新节点。
供参考:我正在使用neo4j-rest-graphdb与数据库交谈。这是一个用于与其余api通讯的远程客户端库。
最佳答案
找到了。在使用Firebug进行调试之后,该页面似乎根本没有重新加载。只是再次显示了缓存的页面。
您必须使用以下三行代码在控制器中手动关闭缓存:
response.setHeader("Cache-control", "no-cache, no-store");
response.setHeader("Pragma", "no-cache");
response.setHeader("Expires", "-1");
关于java - Heroku仅适用于刷新,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15575505/