Puede crear una etiqueta JSP personalizada que amplíe la etiqueta Spring estándar. Al anular el método writeOptionalAttributes, puede agregar los atributos adicionales que necesita. Por ejemplo
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;
}
}
este caso es necesario utilizar un dominio de primer nivel a medida que lo hace el nuevo atributo (s) disponible para el motor JSP. Solo he mostrado un fragmento aquí, ya que es una copia & pegada del original de Spring, con solo su atributo adicional agregado.
<?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>
poner el nuevo archivo TLD en el directorio META-INF de su aplicación web, y luego incluirlo en su JSP como normales
<%@ taglib prefix="custom-form" uri="http://www.your.domain.com/tags/form" %>
Y en lugar de utilizar
<form:form>
uso
<custom-form:form dataAjax="false">
Para jQuery Mobile también es posible suprimir ajax con target = "_ self". –