JSTL Format Tag <fmt:requestEncoding> Example

The <fmt:requestEncoding> tag is used to specify the character encoding of the request. The character encoding specified using this tag is used to decode the incoming forms data entered by the user. We must use this tag to set the character encoding if the encoding used is different from the ISO-8859-1.

Even if the contentType is defined in the JSP page directive by the programmer, the character encoding must be specified because the actual user’s locale may be different from the defined value in the page directive.

<fmt:requestEncoding value=”<string>”/>

The tag has following attributes:

key: Name of character encoding you want to apply when decoding request parameters.

You use the tag when you want to specify character encoding for decoding data posted from forms. This tag must be used with character encodings that are different from ISO-8859-1. The tag is required since most browsers do not include a Content-Type header in their requests.

The purpose of the tag is to specify the content type of the request. You must specify the content type, even if the encoding of the page generating the response is specified via the contentType attribute of a page directive. This is because the response’s actual locale (and thus character encoding) may differ from the value specified in the page directive.

If the page contains an I18N-capable formatting action that sets the response’s locale (and thus character encoding) by calling ServletResponse.setLocale(), any encoding specified in the page directive will be overridden.

The following JSP code sets the character encoding to UTF-8 and displayed localized messages.

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>JSTL fmt:requestEncoding Tag</title>
<fmt:requestEncoding value="UTF-8" />
<fmt:setBundle basename="myapp" var="lang"/>
<fmt:setLocale value="en"/>
<fmt:message key="Name" bundle="${lang}"/><br/>
<fmt:message key="Address" bundle="${lang}"/><br/>
<fmt:message key="Number" bundle="${lang}"/><br/>



This would produce following result:

<<Previous <<   || Index ||   >>Next >>