Info |
---|
This tutorial assumes you've completed the Hello World tutorial and have a working helloworld project. The example code for this tutorial, using_tags, is available for checkout from the Struts 2 subversion sandbox at https://svn.apache.org/repos/asf/struts/sandbox/trunk/struts2examples Image Removed. The example projects use Maven to manage the artifact dependencies and to build the .war files. |
...
Examine the struts.xml configuration in the Hello World tutorial and you will find this:
Code Block |
xml |
---|
| xml |
---|
title | struts.xml |
---|
borderStyle | solid |
---|
| xml |
---|
|
...
<action name="hello" class="org.apache.struts.helloworld.action.HelloWorldAction" method="execute">
<result name="success">/HelloWorld.jsp</result>
</action>
...
|
...
For the Using Tags tutorial add the following to index.jsp just after the link for Hello World.
Code Block |
---|
| html | html |
---|
title | url tag with param |
---|
| html |
---|
|
<s:url action="hello" var="helloLink">
<s:param name="userName">Bruce Phillips</s:param>
</s:url>
<p><a href="${helloLink}">Hello Bruce Phillips</a></p>
|
...
Add the following markup to index.jsp after the Hello Bruce Phillips link.
Code Block |
---|
| html | html |
---|
title | Struts 2 Form |
---|
| html |
---|
|
<p>Get your own personal hello by filling out and submitting this form.</p>
<s:form action="hello">
<s:textfield name="userName" label="Your name" />
<s:submit value="Submit" />
</s:form>
|
...
The Struts form, textfield, and submit tags were converted to this HTML.
Code Block |
---|
| html | html |
---|
title | Struts Form Tags Converted To HTML |
---|
| html |
---|
|
<form id="hello" name="hello" action="/Using_Tags_Struts2_Mvn/hello.action;jsessionid=3471d76027b5342cab44f297b567" method="post">
<table class="wwFormTable">
<tr>
<td class="tdLabel"><label for="hello_userName" class="label">Your name:</label></td>
<td><input type="text" name="userName" value="" id="hello_userName"/></td>
</tr>
<tr>
<td colspan="2"><div align="right"><input type="submit" id="hello_0" value="Submit"/>
</div></td>
</tr>
</table>
</form>
|
...
In the Hello World tutorial's example application on JSP HelloWorld.jsp was this code:
Code Block |
---|
| html | html |
---|
title | Struts Property Tag |
---|
| html |
---|
|
<s:property value="messageStore.message" />
|
...
One very useful feature of the Struts 2 property tag is that it will automatically convert the most common data types (int, double, boolean) to their String equivalents. To demonstrate this feature let's add a static int variable to class HelloWorldAction.
Code Block |
---|
| java | java |
---|
title | Add Static Field |
---|
| java |
---|
|
private static int helloCount = 0;
public int getHelloCount() {
return helloCount;
}
public void setHelloCount(int helloCount) {
HelloWorldAction.helloCount = helloCount;
}
|
Each time the execute method is called we'll increase helloCount by 1. So add this code to the execute method of class HelloWorldAction.
Code Block |
java |
---|
| java |
---|
title | Increase helloCount |
---|
| java |
---|
|
helloCount++;
|
Whenever a user clicks one of the links on page index.jsp (or submits the form), method execute of class HelloWorldAction will be run and the static field helloCount will be increased by one.
To include the value of the helloCount attribute in the HelloWorld.jsp we can use the Struts 2 property tag. Add the following to HelloWorld.jsp after the h2 tag.
Code Block |
html |
---|
| html |
---|
title | Use Property Tag To Display helloCount Value |
---|
| html |
---|
|
<p>I've said hello <s:property value="helloCount" /> times!</p>
|
...
If the value returned by the get method is an object, then the property tag will cause Struts 2 to call the object's toString method. Of course, you should always override Class Object's toString method in your model classes. Add the following toString method to the MessageStore class:
Code Block |
---|
| java | java |
---|
title | Add toString Method To Class MessageStore |
---|
| java |
---|
|
public String toString() {
return message + " (from toString)";
}
|
Add the following to HelloWorld.jsp
Code Block |
---|
| html | html |
---|
title | Using Property Tag to Call toString |
---|
| html |
---|
|
<p><s:property value="messageStore" /></p>
|
...