来自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

上一篇: Extra attributes from Spring <form:form>

下一篇: Permissions for roles in .NET