Encode based on response character encoding
Before this commit, characters were always encoded with the default encoding (i.e. ISO-8859-1). Now, the character encoding of the response is used. Closes gh-files
This commit is contained in:
@@ -92,7 +92,8 @@ public abstract class AbstractFormTag extends HtmlEscapingAwareTag {
|
||||
* as required. This version is <strong>not</strong> {@link PropertyEditor}-aware.
|
||||
*/
|
||||
protected String getDisplayString(@Nullable Object value) {
|
||||
return ValueFormatter.getDisplayString(value, isHtmlEscape());
|
||||
String displayString = ValueFormatter.getDisplayString(value, false);
|
||||
return isHtmlEscape() ? htmlEscape(displayString) : displayString;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -102,7 +103,8 @@ public abstract class AbstractFormTag extends HtmlEscapingAwareTag {
|
||||
* to obtain the display value.
|
||||
*/
|
||||
protected String getDisplayString(@Nullable Object value, @Nullable PropertyEditor propertyEditor) {
|
||||
return ValueFormatter.getDisplayString(value, propertyEditor, isHtmlEscape());
|
||||
String displayString = ValueFormatter.getDisplayString(value, propertyEditor, false);
|
||||
return isHtmlEscape() ? htmlEscape(displayString) : displayString;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -96,8 +96,8 @@ class InputTagTests extends AbstractFormTagTests {
|
||||
|
||||
@Test
|
||||
void simpleBindWithHtmlEscaping() throws Exception {
|
||||
final String NAME = "Rob \"I Love Mangos\" Harrop";
|
||||
final String HTML_ESCAPED_NAME = "Rob "I Love Mangos" Harrop";
|
||||
final String NAME = "Rob \"I Love Cafés\" Harrop";
|
||||
final String HTML_ESCAPED_NAME = "Rob "I Love Cafés" Harrop";
|
||||
|
||||
this.tag.setPath("name");
|
||||
this.rob.setName(NAME);
|
||||
@@ -112,6 +112,25 @@ class InputTagTests extends AbstractFormTagTests {
|
||||
assertValueAttribute(output, HTML_ESCAPED_NAME);
|
||||
}
|
||||
|
||||
@Test
|
||||
void simpleBindWithHtmlEscapingAndCharacterEncoding() throws Exception {
|
||||
final String NAME = "Rob \"I Love Cafés\" Harrop";
|
||||
final String HTML_ESCAPED_NAME = "Rob "I Love Cafés" Harrop";
|
||||
|
||||
this.getPageContext().getResponse().setCharacterEncoding("UTF-8");
|
||||
this.tag.setPath("name");
|
||||
this.rob.setName(NAME);
|
||||
|
||||
assertThat(this.tag.doStartTag()).isEqualTo(Tag.SKIP_BODY);
|
||||
|
||||
String output = getOutput();
|
||||
assertTagOpened(output);
|
||||
assertTagClosed(output);
|
||||
|
||||
assertContainsAttribute(output, "type", getType());
|
||||
assertValueAttribute(output, HTML_ESCAPED_NAME);
|
||||
}
|
||||
|
||||
protected void assertValueAttribute(String output, String expectedValue) {
|
||||
assertContainsAttribute(output, "value", expectedValue);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user