繁体   English   中英

如何在整个struts项目中仅对1个站点重新启用自动完成支持?

[英]How can I reenable autocomplete support for just 1 site in my whole struts project?

由于我几天来一直试图解决这个问题,因此我想给你们一个机会。 情况:

我们正在运行一个带有Java Server Pages和Struts后台的SAP Shop。 我们必须使用以下命令禁用HTML标头可设置的缓存:

response.setHeader("Pragma", "no-cache");
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Expires", "0");

现在,我想做的事情对我们来说似乎是一个简单的任务,但结果却比我们预期的更加科学。

我们只想为登录页面打开IE的自动完成功能。 我和我的同事尝试的是简单的方法,例如将标头值重置为各种“应该缓存”的值,例如“ public”值,明天或某日都将到期。 IE6及更高版本中的自动完成框都没有给我们任何帮助。

有人知道Struts系统中的“仅一页”打开缓存的方法吗?

我认为自动完成与缓存响应标头没有任何关系。 默认情况下,自动完成功能是打开的,可以使用autocomplete="off"在特定的表单字段上将其禁用。 如果您在登录表单字段中具有此类属性,则只需将其删除。

请参阅如何禁用Web表单字段/输入标签上的浏览器自动完成功能?

好吧,现在我自己找到了答案。 当您谈论它时似乎更容易,对吗?

因此,问题在于,我们使用了javascript函数来提交登录表单网站。 但这不是您应该怎么做(例如微软)。 几分钟前,我听到了一次技术广播,内容是有关Internet Explorer依靠可疑按钮来实现浏览器功能的。

听说答案在我脑海中很清晰。 我要提交一个按钮。 由于我们(必须使用!)使用Javascript提交,导致按钮仅是样式化的div,因此我不得不调用按钮单击以向IE表示我们进行了“官方”回发。

那是代码:

function submitLoginForm()
{
    var hiddenSubmitBtn = document.getElementById("hiddenSubmitButton");
    if(hiddenSubmitBtn.click) {
        hiddenSubmitBtn.click();
    } else {
        document.loginform.submit();
    }
    return false;
}

现在可以正常工作了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM