Friday, August 6, 2010

JSTL Sample Code / Examples / Tutorials for c:out and c:set

In this article we will see how JSTL TAG c:set and c:out can be used inside JSP page.

When a JSP page needs to store data as a variable for its processing, it must specify a location, called the scope. See how JSP Page store data in variables in the four available scopes.

Data is saved using a mechanism called scoped variables. A scoped variable has a name, which is of type String and a value, which is of type Object. For non-page scoped variables, it is recommended that the name use the reverse domain name convention (e.g., prefixed with com_myprefix) to minimize unexpected collisions when integrating with third party modules.


When using the JSTL's expression language, the variables in each
scope are made available in the implicit objects pageScope, requestScope, sessionScope, and applicationScope


This example saves and retrieves values in scoped variables in each of the four scopes:


<%-- Declare the core library --%>
<%@ taglib uri="/WEB-INF/tld/c.tld" prefix="c" %>

<%-- Save data in scoped variables --%>

<c:set var="name1" value="testvalue1" scope="page" />
<c:set var="com_myprefix_name2" value="tesvalue2" scope="request" />
<c:set var="com_myprefix_name3" value="tesvalue3" scope="session" />
<c:set var="com_myprefix_name4" value="tesvalue4" scope="application" />

<%-- Show the saved values --%>
<c:out value='${pageScope.name1}' />
<c:out value='${requestScope.com_myprefix_name2}' />
<c:out value='${sessionScope.com_myprefix_name3}' />

<c:out value='${applicationScope.com_myprefix_name4}' />

When retrieving a saved value, it is possible to omit the scope. If the scope is omitted, the variable name is automatically searched for in each of the scopes, in the order pageScope, requestScope, sessionScope, and applicationScope.



<%-- Show the saved values without a specific scope --%>

<c:out value='${name1}' />
<c:out value='${com_myprefix_name2}' />
<c:out value='${com_myprefix_name3}' />
<c:out value='${com_myprefix_name4}' />

It is also possible to specify the value to save using the contents
of the body, rather than through the value attribute:


<%-- Save data using body content --%>
<c:set var="name1" scope="page">
tesvalue 1 in body
</c:set>
<c:set var="com_myprefix_name2" scope="request" >
tesvalue 2 in body
</c:set>
<c:set var="com_myprefix_name3" scope="session" >
tesvalue 3 in body

</c:set>
<c:set var="com_myprefix_name4" scope="application">
tesvalue 4 in body
</c:set>


When specifying the value using body contents, the body contents is first trimmed of leading and trailing white space before it is saved. For example,

<c:set var="name1" scope="page">
line 1
line 2

</c:set>
would be saved as:

"line 1\n    line 2"

No comments:

Post a Comment