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.