7.8. Using Wildcards in Action Paths
Problem
You want to reduce the number of action mappings by combining similar action mappings into a single generic mapping.
Solution
<action path="/Edit*" type="com.oreilly.strutsckbk.ch07.Edit{1}Action" name="{1}Form" scope="request" validate="false"> <forward name="success" path="/edit_{1}.jsp"/> </action> <action path="/Save*" type="com.oreilly.strutsckbk.ch07.Save{1}Action" name="{1}Form" scope="request" validate="true" input="edit_{1}.jsp"> <forward name="success" path="/saved_{1}.jsp"/> </action>
Discussion
Many developers find that their action mappings start to follow
similar patterns. In fact, many applications use standard conventions
for naming action paths,
Action
classes, and
ActionForms
, making their application easier to
organize and maintain. Struts 1.2 allows you to leverage these
conventions in your
struts-config.xml
file. Create your action elements using an asterisk
(*
) as a wildcard in the path
attribute. When Struts finds the action mapping for a given request
path, it attempts to find an exact match. If an exact match is not
found, it attempts a match using the wildcards.
In the Solution, for example, when a request comes in for
/EditEmployee.do, the action mapping with the
path of /Edit*
will match. The
{1}
notation represents the part of the request
URL value that matches the wildcard, minus any extension. In this
case, {1}
has the value of
Employee
.
Wildcard mappings reduce the number of action elements you have to write ...
Get Jakarta Struts Cookbook now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.