我们已经构建了一个java程序,其中一个进程开始并开始将日志输入到日志文件中,该日志始终保存在同一位置。每次进程开始时,都会生成一个新的日志文件,其名称中带有时间戳(例如:Process_16-11-2013-11-11.log,Process_16-11-2013-13-56.log)。一旦过程结束,我们就会向用户显示jsp上的超链接。此链接包含日志文件的路径。用户可以单击此链接查看日志文件。
<%
HashMap bundleDetails = new HashMap();
String bundleCommonLocation = prop.getProperty("bundleCommonLocation");
bundleDetails.put("currentLogFileName", bundleCommonLocation + "propagateBundle_"+dateFormat(startDatedt)+".log");
%>
<div id="fileLink">
<a target="_blank" href="<%=bundleDetails.get("currentLogFileName") %>">Click here to view log file</a>
</div>
在上面的代码中,
prop.getProperty
从属性文件中获取值。当我指向超链接时,我可以看到一个形成良好的超链接。如果我点击它,没有任何反应。页面停留在原处。我试图通过右键单击并选择适当的选项在新窗口中打开它,但这也不起作用
奇怪的是,如果我右键单击并选择“复制链接地址”,然后将其粘贴到新选项卡中并按Enter键,日志文件将正确打开。
值得注意的一点:
jsp加载后源代码中的超链接摘录:
<div id="fileLink"><a target="_blank" href="D:\IQProcess\Common\Bundles\propagateBundle_2013-11-17-03-49.log">Click here to view log file</a></div>
我的css没有造成任何问题,因为我从css中删除了id“fileLink”然后运行它。同样的问题。
日志文件是在进程运行时动态生成的。尽管有问题的超链接显示在进程的最后,但它是在进程开始时形成的,这意味着在日志文件实际形成之前。但是我们将其隐藏起来并仅在流程执行完成后显示给用户。这可能是原因吗?
的修改
为了澄清,tomcat服务器位于远程计算机上,用户正在本地计算机上运行程序。在向用户显示超链接之前,我们成功地将日志文件从tomcat机器复制到用户特定的本地机器,并且此超链接尝试打开位于此用户特定本地计算机上的文件。