来自Spring <form:form>的额外属性
对于jQuery Mobile我需要像下面这样的标记:
<form action="..." method="get" data-ajax="false">
<!-- Fields -->
</form>
自从我和Spring一起工作以来,我真的很喜欢<form:form>
为我做的事情,所有便利的绑定,生成字段等等。
我怎样才能让<form:form>
打印额外的属性?
<form:form>
标签将允许任意属性。
<form:form commandName="blah" data-ajax="false">
将工作得很好。
您可以创建一个扩展标准Spring标签的自定义JSP标签。 通过重写writeOptionalAttributes方法,可以添加所需的其他属性。 例如
public class FormTag
extends org.springframework.web.servlet.tags.form.FormTag {
private String dataAjax;
/* (non-Javadoc)
* @see org.springframework.web.servlet.tags.form.AbstractHtmlElementTag#writeOptionalAttributes(org.springframework.web.servlet.tags.form.TagWriter)
*/
@Override
protected void writeOptionalAttributes(final TagWriter tagWriter) throws JspException {
super.writeOptionalAttributes(tagWriter);
writeOptionalAttribute(tagWriter, "data-ajax", getDataAjax());
}
/**
* Returns the value of dataAjax
*/
public String getDataAjax() {
return dataAjax;
}
/**
* Sets the value of dataAjax
*/
public void setDataAjax(String dataAjax) {
this.dataAjax = dataAjax;
}
}
然后,您需要使用一个自定义TLD,这个新的属性可用于JSP引擎。 我在这里只显示了一小部分内容,因为它是Spring原创的复制和粘贴,只添加了额外的属性。
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<taglib>
<tlib-version>1.0</tlib-version>
<jsp-version>1.2</jsp-version>
<short-name>custom-form</short-name>
<uri>http://www.your.domain.com/tags/form</uri>
<description>Custom Form Tag Library</description>
<!-- <form:form/> tag -->
<tag>
<name>form</name>
<tag-class>com.your.package.tag.spring.form.FormTag</tag-class>
<body-content>JSP</body-content>
<description>Renders an HTML 'form' tag and exposes a
binding path to inner tags for binding.</description>
<attribute>
<name>id</name>
<rtexprvalue>true</rtexprvalue>
<description>HTML Standard Attribute</description>
</attribute>
....
<attribute>
<name>dataAjax</name>
<rtexprvalue>true</rtexprvalue>
<description>jQuery data ajax attribute</description>
</attribute>
将新的TLD文件放入您的Web应用程序的META-INF目录中,然后像平常一样将它包含在JSP中
<%@ taglib prefix="custom-form" uri="http://www.your.domain.com/tags/form" %>
而不是使用
<form:form>
使用
<custom-form:form dataAjax="false">
链接地址: http://www.djcxy.com/p/54129.html