Struts Tag Library
1
Disclaimer & Acknowledgments ●
● ●
Even though Sang Shin is a full-time employees of Sun Microsystems, the contents here are created as their own personal endeavor and thus does not reflect any official stance of Sun Microsystems. Sun Microsystems is not responsible for any inaccuracies in the contents. Acknowledgments: – Struts' user's guide is also used in creating slides and speaker notes –
“Using the Struts framework” presentation material from Sue Spielman of Switchback Software (
[email protected])
2
Revision History ● ●
11/10/2003: version 1: created by Sang Shin Things to do – Speaker notes need to be added to some slides
3
Agenda ● ● ●
Struts tag libraries Struts and JSTL Struts-EL
4
Struts Tag Libraries
5
Tag Libraries Overview ●
Number of taglibs included as part of Struts –
●
Bean tags –
●
Provides presentation logic tags that eliminate need for scriptlets
Template tags (Tiles in v1.1) –
●
Form bridge between JSP view and other components
Logic tags –
●
Tags for accessing Beans and their properties
Html tags –
●
Usage is not required, but helpful
Tags to form JSP templates that include parameterized content
Nested Tags (v1.1) – –
Allows for object hierarchy Helpful for rendering lists of lists 6
Access to Tag Libraries ●
All tag libraries are defined in web.xml using
element /WEB-INF/struts-bean.tld /WEB-INF/struts-bean.tld /WEB-INF/struts-html.tld /WEB-INF/struts-html.tld …
7
Bean Tags 8
Bean Tags ●
●
Tags for accessing beans and their properties (not altering, however) Enhancements to <jsp:useBean> –
●
Some of the attributes, for example id, name, property, and scope, share same meanings
Convenient mechanisms to create new beans based on the value of: – – –
User entered parameters Request headers Cookies 9
Attributes of Bean Tags ● ●
● ●
id - define a bean name - refer to an existing bean (the value is either the value of an id attribute in a previous tag, or is found in application, session, request, or page scope) property - a property from a bean scope - scope to search for the bean. If scope is not specified then the bean is searched for in page, request, session and application order 10
Bean Tags ● ● ● ● ● ● ● ● ●
11
●
For creating variables from beans and properties –
●
●
Without it, you would have to create Java codebased scripting variables in your JSP pages
The variables are used later in the JSP page For exposing Java objects (i.e. Collections) that are created in a Action class to a JSP
12
Examples: ●
–
●
–
●
Get a bean with a String constant Get an existing bean
–
Get a single property from a bean
13
Example1: favorites.jsp (ch 03) 2 3 4 5
6 1
14
Example2: view_favorites.jsp (ch 03) 1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
<script language="JavaScript"> function showMessage() { alert( "Hello, !" ); } Thanks for responding, !
Click Me
You have indicated that your favorite colors are:
15
Example2: FovoritesForm Class (ch 03) 1
public final class FavoritesForm extends ActionForm {
2 3 private static String[] javaIdes = new String[] {"Eclipse", "IDEA", "JBuilder", "JDeveloper", "NetBeans"}; 4 private static String[] csharpIdes = new String[] {"SharpDevelop", "Visual Studio"}; 5 6 public FavoritesForm() { 7 webLinks = new ArrayList(); 8 for (int i=0; i<5; i++) webLinks.add(new WebLink()); 9 colors = new String[3]; 10 colors[0]="Black"; 11 colors[1]="Blue"; 12 colors[2]="Red"; 13 } 14 ... 15 public String[] getColors() { 16 return colors; 17 }
16
●
●
●
Use it to output the contents of a bean's property The information returned to the page is rendered as a String Use it to encode and unencode information
17
Example1: <jsp:useBean id="dvd" class="hansen.playground.DVD" scope="request"/> ... <jsp:getProperty name="dvd" property="title"/> Using Struts you simply use the write tag:
18
Example2: submitAction.java 1 public final class SubmitAction extends Action { 2 3 // The execute() method is where you provide your business logic 4 public ActionForward execute(ActionMapping mapping, 5 ActionForm form, 6 HttpServletRequest request, 7 HttpServletResponse response) { 8 9 // Cast ActionForm object to SubmitForm type 10 SubmitForm f = (SubmitForm) form; 11 12 // Retrieve the value of lastname field 13 String lastName = f.getLastName(); 14 15 // Translate the lastname to upper case and save it Request scope 16 request.setAttribute("lastName", lastName.toUpperCase()); 17 18 // Create and return ActionForward object with "success" outcome 19 return (mapping.findForward("success")); 20 } 21 }
19
Example2: submit.jsp 1 2 3 4 5 6 7 8 9 10 11 12 13
Hello young old