2011-08-02 8 views
7

para jQuery Mobile necesito markup como:atributos adicionales a partir de la primavera <form:form>

<form action="..." method="get" data-ajax="false"> 
    <!-- Fields --> 
</form> 

Como trabajo con la primavera, me gusta mucho lo que está haciendo <form:form> para mí, con todos los enlaces convenientes, la generación de campos, etc.

¿Cómo puedo hacer que <form:form> imprima el atributo extra?

+0

Para jQuery Mobile también es posible suprimir ajax con target = "_ self". –

Respuesta

4

TheLa etiquetapermitirá atributos arbitrarios.

<form:form commandName="blah" data-ajax="false"> 

Funcionará bien.

0

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"> 
Cuestiones relacionadas