使用 STRUTS 禁用自动完成(autocomplete="off")
Posted
技术标签:
【中文标题】使用 STRUTS 禁用自动完成(autocomplete="off")【英文标题】:Disable Auto-complete(autocomplete="off") using STRUTS 【发布时间】:2014-08-01 02:50:10 【问题描述】:我试图在 struts 框架中禁用自动完成(autocomplete="off"),我遵循的过程是 1)在 Strut-html.tld 文件中,我几乎没有 TextTag 的属性,因此添加了自动完成属性
<tagclass>org.apache.struts.taglib.html.TextTag</tagclass>
<attribute>
<name>autocomplete</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
2)我通过扩展 org.apache.struts.taglib.html.TextTag 为 customtag 编写了一个类
import org.apache.struts.taglib.html.TextTag.*;
public class TextTag extends org.apache.struts.taglib.html.TextTag
private static final long serialVersionUID = 1L;
private String autocomplete = null;
public String getAutocomplete()
return autocomplete;
public void setAutoComplete(String autocomplete)
this.autocomplete = autocomplete;
protected void prepareOtherAttributes(StringBuffer sb)
if (autocomplete != null)
sb.append(" autocomplete=\""+autocomplete+"\"");
3) 在 jsp 页面中我添加了 autocomplete="off" 属性
所以当我运行我的应用程序时出现以下错误
/index.jsp(1): Error in using tag library uri='/tags/struts-html' prefix='html':
The Tagclass'org.apache.struts.taglib.html.FormTag' has no setter method corresponding
to TLD declared attribute 'name', (JSP 1.1 spec, 5.4.1) probably occurred due to an
error in /index.jsp line 1:
<%@ taglib uri="/tags/struts-html" prefix="html" %>
请有人帮我解决这个错误,我也尝试使用 javascript,但它不起作用。
function DisableAutocomplete()
var AC_Disable_login=document.forms[0].elements['loginID'];
AC_Disable_login.setAttribute ("autocomplete", "off");
【问题讨论】:
正确格式化代码。 嗨,Braj,我认为代码现在格式正确。 仍有一些对齐问题,但没有问题,它看起来比以前更好。 它可能会帮助你。阅读form/input tags and turning off autocomplete 感谢您的链接,即使我以相同的方式尝试过,但它显示相同的错误。 【参考方案1】:您无需重写 Struts 1.x 即可添加此功能。您只需添加以下几行:
<script src="//code.jquery.com/jquery-1.11.1.min.js"></script>
<script>
$(function()
$(":text").attr("autocomplete", "off");
);
</script>
【讨论】:
嗨,保罗,感谢您的回答,我应该添加(链接)上面提到的代码部分吗? 你可以在<head>
部分或者最后的<body>
中添加,你想要的地方。
嗨,保罗,感谢您的帮助,正如我上面提到的,我在 struts 应用程序中的属性是文本,所以我可以将您的代码 sn-p 应用于文本属性而不是输入属性...比如 $(" :text").attr("自动完成", "关闭");
嗨,保罗我用过 http://www.coderanch.com/t/54020/Struts/form-input-tags-turning-autocomplete 此处记录了一个快速而肮脏的 hack,它将自动完成选项嵌入到另一个表单元素中。
例如
<html:form method="post\" autocomplete=\"off" action="verify_login.do" >
Struts 呈现为
<form name="LoginForm" method="post" autocomplete="off" action="verify_login.do">
它并不漂亮,但它省去了重新定义 Struts 标记库的需要。
【讨论】:
【参考方案3】:我尝试了很多解决方案 1.包括上面给出的肮脏的黑客, 2. 通过在页面加载时调用脚本来设置表单的自动完成功能:
<body class="article-page auxillary-page" onload="autocompletion()">
function autocompletion()
for (i=0; i<document.forms.length; i++)
document.forms[i].setAttribute("AutoComplete","off");
还有一些其他的,它们似乎都不起作用.. 我认为唯一的解决方案是: 将您的标签更改为 html 标签,然后在表单的提交函数中将该值分配给您所需的 bean 属性。
你可以使用
<input type="password" name="password1" maxlength="4" size="25" readonly onfocus="this.removeAttribute('readonly');" autocomplete="off" />
这在 struts 1、J7 Eclipse keplar、wildfly 服务器上对我有用。
【讨论】:
以上是关于使用 STRUTS 禁用自动完成(autocomplete="off")的主要内容,如果未能解决你的问题,请参考以下文章