Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.apache.struts2.dispatcher.mapper
Class DefaultActionMapper

    java.lang.Object
      org.apache.struts2.dispatcher.mapper.DefaultActionMapper

All Implemented Interfaces:
  ActionMapper

Direct Known Subclasses:
  Restful2ActionMapper

    public class DefaultActionMapper

extends Object
implements ActionMapper

Default action mapper implementation, using the standard *.[ext] (where ext usually "action") pattern. The extension is looked up from the Struts configuration key struts.action.exection.

To help with dealing with buttons and other related requirements, this mapper (and other `ActionMapper`s, we hope) has the ability to name a button with some predefined prefix and have that button name alter the execution behaviour. The four prefixes are:

- Method prefix - method:default
- Action prefix - action:dashboard
- Redirect prefix - redirect:cancel.jsp
- Redirect-action prefix - redirect-action:cancel

In addition to these four prefixes, this mapper also understands the action naming pattern of foo!bar in either the extension form (eg: foo!bar.action) or in the prefix form (eg: action:foo!bar). This syntax tells this mapper to map to the action named foo and the method bar.

Method Prefix

With method-prefix, instead of calling baz action's execute() method (by default if it isn't overriden in struts.xml to be something else), the baz action's anotherMethod() will be called. A very elegant way determine which button is clicked. Alternatively, one would have submit button set a particular value on the action when clicked, and the execute() method decides on what to do with the setted value depending on which button is clicked.

      <!-- START SNIPPET: method-example -->
      <a:form action="baz">
          <a:textfield label="Enter your name" name="person.name"/>
          <a:submit value="Create person"/>
          <a:submit name="method:anotherMethod" value="Cancel"/>
      </a:form>
      <!-- END SNIPPET: method-example -->

Action prefix

With action-prefix, instead of executing baz action's execute() method (by default if it isn't overriden in struts.xml to be something else), the anotherAction action's execute() method (assuming again if it isn't overriden with something else in struts.xml) will be executed.

      <!-- START SNIPPET: action-example -->
      <a:form action="baz">
          <a:textfield label="Enter your name" name="person.name"/>
          <a:submit value="Create person"/>
          <a:submit name="action:anotherAction" value="Cancel"/>
      </a:form>
      <!-- END SNIPPET: action-example -->

Redirect prefix

With redirect-prefix, instead of executing baz action's execute() method (by default it isn't overriden in struts.xml to be something else), it will get redirected to, in this case to www.google.com. Internally it uses ServletRedirectResult to do the task.

      <!-- START SNIPPET: redirect-example -->
      <a:form action="baz">
          <a:textfield label="Enter your name" name="person.name"/>
          <a:submit value="Create person"/>
          <a:submit name="redirect:www.google.com" value="Cancel"/>
      </a:form>
      <!-- END SNIPPET: redirect-example -->

Redirect-action prefix

With redirect-action-prefix, instead of executing baz action's execute() method (by default it isn't overriden in struts.xml to be something else), it will get redirected to, in this case 'dashboard.action'. Internally it uses ServletRedirectResult to do the task and read off the extension from the struts.properties.

      <!-- START SNIPPET: redirect-action-example -->
      <a:form action="baz">
          <a:textfield label="Enter your name" name="person.name"/>
          <a:submit value="Create person"/>
          <a:submit name="redirect-action:dashboard" value="Cancel"/>
      </a:form>
      <!-- END SNIPPET: redirect-action-example -->

Nested Class Summary
`(package private) static interface` | `DefaultActionMapper.ParameterAction` Defines a parameter action prefix

Field Summary
`(package private) static String` | `ACTION_PREFIX`
`private boolean` | `allowDynamicMethodCalls`
`private boolean` | `allowSlashesInActionNames`
`private boolean` | `alwaysSelectFullNamespace`
`private Container` | `container`
`(package private) List` | `extensions`
`(package private) static String` | `METHOD_PREFIX`
`private PrefixTrie` | `prefixTrie`
`(package private) static String` | `REDIRECT_ACTION_PREFIX`
`(package private) static String` | `REDIRECT_PREFIX`

Constructor Summary
`DefaultActionMapper()`

Method Summary
`(package private) String` | `dropExtension(String name)` Drops the extension from the action name
`(package private) String` | `getDefaultExtension()` Returns null if no extension is specified.
`ActionMapping` | `getMapping(HttpServletRequest request, ConfigurationManager configManager)` Expose the ActionMapping for the current request
`(package private) String` | `getUri(HttpServletRequest request)` Gets the uri from the request
`String` | `getUriFromActionMapping(ActionMapping mapping)` Convert an ActionMapping into a URI string
`void` | `handleSpecialParameters(HttpServletRequest request, ActionMapping mapping)` Special parameters, as described in the class-level comment, are searched for and handled.
`(package private) void` | `parseNameAndNamespace(String uri, ActionMapping mapping, ConfigurationManager configManager)` Parses the name and namespace from the uri
`void` | `setAllowDynamicMethodCalls(String allow)`
`void` | `setAlwaysSelectFullNamespace(String val)`
`void` | `setContainer(Container container)`
`void` | `setExtensions(String extensions)`
`void` | `setSlashesInActionNames(String allow)`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### METHOD_PREFIX

    static final String METHOD_PREFIX

See Also:
  Constant Field Values

### ACTION_PREFIX

    static final String ACTION_PREFIX

See Also:
  Constant Field Values

### REDIRECT_PREFIX

    static final String REDIRECT_PREFIX

See Also:
  Constant Field Values

### REDIRECT_ACTION_PREFIX

    static final String REDIRECT_ACTION_PREFIX

See Also:
  Constant Field Values

### allowDynamicMethodCalls

    private boolean allowDynamicMethodCalls

### allowSlashesInActionNames

    private boolean allowSlashesInActionNames

### alwaysSelectFullNamespace

    private boolean alwaysSelectFullNamespace

### prefixTrie

    private PrefixTrie prefixTrie

### extensions

    List extensions

### container

    private Container container

Constructor Detail

### DefaultActionMapper

    public DefaultActionMapper()

Method Detail

### setAllowDynamicMethodCalls

    public void setAllowDynamicMethodCalls(String allow)

### setSlashesInActionNames

    public void setSlashesInActionNames(String allow)

### setAlwaysSelectFullNamespace

    public void setAlwaysSelectFullNamespace(String val)

### setContainer

    public void setContainer(Container container)

### getMapping

    public ActionMapping getMapping(HttpServletRequest request,
                                    ConfigurationManager configManager)

  Description copied from interface: `ActionMapper`
  Expose the ActionMapping for the current request

  Specified by:
    `getMapping` in interface `ActionMapper`
  Parameters:
    `request` - The servlet request
    `configManager` - The current configuration manager
  Returns:
    The appropriate action mapping

### handleSpecialParameters

    public void handleSpecialParameters(HttpServletRequest request,
                                        ActionMapping mapping)

  Special parameters, as described in the class-level comment, are searched for and handled.

  Parameters:
    `request` - The request
    `mapping` - The action mapping

### parseNameAndNamespace

    void parseNameAndNamespace(String uri,
                               ActionMapping mapping,
                               ConfigurationManager configManager)

  Parses the name and namespace from the uri

  Parameters:
    `uri` - The uri
    `mapping` - The action mapping to populate

### dropExtension

    String dropExtension(String name)

  Drops the extension from the action name

  Parameters:
    `name` - The action name
  Returns:
    The action name without its extension

### getDefaultExtension

    String getDefaultExtension()

  Returns null if no extension is specified.

### setExtensions

    public void setExtensions(String extensions)

### getUri

    String getUri(HttpServletRequest request)

  Gets the uri from the request

  Parameters:
    `request` - The request
  Returns:
    The uri

### getUriFromActionMapping

    public String getUriFromActionMapping(ActionMapping mapping)

  Description copied from interface: `ActionMapper`
  Convert an ActionMapping into a URI string

  Specified by:
    `getUriFromActionMapping` in interface `ActionMapper`
  Parameters:
    `mapping` - The action mapping
  Returns:
    The URI string that represents this mapping

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Copyright © 2000-2007 Apache Software Foundation. All Rights Reserved.