提交 bba8bb6e 编写于 作者: R Rossen Stoyanchev

SPR-8661 Add disabled attribute to HiddenInputTag

上级 78fbceff
......@@ -19,6 +19,7 @@ Changes in version 3.1 RC2 (2011-11-15)
* Support target request with multiple parameter values in FlahMap matching logic
* Fix issue in SimpleMappingExceptionResolver causing exception when setting "statusCodes" property
* The Form input tag allows type values other than "text" such as HTML5-specific types.
* The Form hidden tag supports "disabled" attribute
Changes in version 3.1 RC1 (2011-10-11)
---------------------------------------
......
......@@ -35,6 +35,28 @@ import javax.servlet.jsp.JspException;
@SuppressWarnings("serial")
public class HiddenInputTag extends AbstractHtmlElementTag {
/**
* The name of the '<code>disabled</code>' attribute.
*/
public static final String DISABLED_ATTRIBUTE = "disabled";
private String disabled;
/**
* Get the value of the '<code>disabled</code>' attribute.
*/
public String getDisabled() {
return this.disabled;
}
/**
* Set the value of the '<code>disabled</code>' attribute.
* May be a runtime expression.
*/
public void setDisabled(String disabled) {
this.disabled = disabled;
}
/**
* Flags "type" as an illegal dynamic attribute.
*/
......@@ -54,10 +76,20 @@ public class HiddenInputTag extends AbstractHtmlElementTag {
tagWriter.startTag("input");
writeDefaultAttributes(tagWriter);
tagWriter.writeAttribute("type", "hidden");
if (isDisabled()) {
tagWriter.writeAttribute(DISABLED_ATTRIBUTE, "disabled");
}
String value = getDisplayString(getBoundValue(), getPropertyEditor());
tagWriter.writeAttribute("value", processFieldValue(getName(), value, "hidden"));
tagWriter.endTag();
return SKIP_BODY;
}
/**
* Is the current HTML tag disabled?
*/
protected boolean isDisabled() throws JspException {
return evaluateBoolean(DISABLED_ATTRIBUTE, getDisabled());
}
}
......@@ -652,6 +652,12 @@
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<description>HTML Optional Attribute. Setting the value of this attribute to 'true' (without the quotes) will disable the HTML element.</description>
<name>disabled</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<description>HTML Event Attribute</description>
<name>onclick</name>
......
......@@ -16,12 +16,12 @@
package org.springframework.web.servlet.tags.form;
import org.springframework.beans.TestBean;
import org.springframework.validation.BeanPropertyBindingResult;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.Tag;
import org.springframework.beans.TestBean;
import org.springframework.validation.BeanPropertyBindingResult;
/**
* @author Rob Harrop
*/
......@@ -31,6 +31,7 @@ public class HiddenInputTagTests extends AbstractFormTagTests {
private TestBean bean;
@SuppressWarnings("serial")
protected void onSetUp() {
this.tag = new HiddenInputTag() {
protected TagWriter createTagWriter() {
......@@ -52,6 +53,7 @@ public class HiddenInputTagTests extends AbstractFormTagTests {
assertContainsAttribute(output, "type", "hidden");
assertContainsAttribute(output, "value", "Sally Greenwood");
assertAttributeNotPresent(output, "disabled");
}
public void testWithCustomBinder() throws Exception {
......@@ -82,6 +84,34 @@ public class HiddenInputTagTests extends AbstractFormTagTests {
}
}
public void testDisabledTrue() throws Exception {
this.tag.setDisabled("true");
this.tag.doStartTag();
this.tag.doEndTag();
String output = getOutput();
assertTagOpened(output);
assertTagClosed(output);
assertContainsAttribute(output, "disabled", "disabled");
}
// SPR-8661
public void testDisabledFalse() throws Exception {
this.tag.setDisabled("false");
this.tag.doStartTag();
this.tag.doEndTag();
String output = getOutput();
assertTagOpened(output);
assertTagClosed(output);
assertAttributeNotPresent(output, "disabled");
}
private void assertTagClosed(String output) {
assertTrue(output.endsWith("/>"));
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册