我试图在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为/ tag写了一个类
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");
}
答案 0 :(得分:2)
您无需重写Struts 1.x即可添加此功能。您只需添加以下行:
<script src="//code.jquery.com/jquery-1.11.1.min.js"></script>
<script>
$(function(){
$(":text").attr("autocomplete", "off");
});
</script>
答案 1 :(得分:1)
此处记录了一个快速而肮脏的黑客http://www.coderanch.com/t/54020/Struts/form-input-tags-turning-autocomplete,它将自动完成选项嵌入到另一个表单元素中。
例如
<html:form method="post\" autocomplete=\"off" action="verify_login.do" >
Struts渲染为
<form name="LoginForm" method="post" autocomplete="off" action="verify_login.do">
它不漂亮,但它节省了重新定义Struts标记库的需要。
答案 2 :(得分:0)
我尝试了很多解决方案 1.包括上面给出的脏黑客, 2.通过在页面加载时调用脚本来为表单设置自动完成:
var selectedIndex = Int ()
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell
{
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as! CollectionViewCell
cell.backgroundColor = selectedIndex == indexPath.row ? UIColor.green : UIColor.red
return cell
}
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath)
{
selectedIndex = indexPath.row
self.yourCollctionView.reloadData()
}
&#13;
和其他几个人,他们似乎都没有工作.. 我认为唯一的解决方案是: 将您的标记更改为html标记,然后在表单的提交函数中将该值分配给您所需的bean属性。
你可以使用
<body class="article-page auxillary-page" onload="autocompletion()">
function autocompletion()
{
for (i=0; i<document.forms.length; i++) {
document.forms[i].setAttribute("AutoComplete","off");
}
}
&#13;
这对struts 1,J7 Eclipse keplar,wildfly服务器有用。