Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Info

The example code for this tutorial,

Wiki Markup
{info}The example code for this tutorial,

Wildcard_Method_Struts2_Ant

or

Wildcard_Method_Struts2_Mvn,

is

available

on

Google

Code

-

http://code.google.com/p/struts2-examples/downloads/listImage Added.

After

downloading

and

unzipping

the

file,

you'll

have

a

folder

named

Wildcard_Method_Struts2_Ant

(or

Wildcard_Method_Struts2_Mvn).

In

that

folder

will

be

a

README.txt

file

with

instructions

on

now

to

build

and

run

the

example

application.

{info} h3. Introduction In this tutorial

Introduction

In this tutorial we'll

...

cover

...

how

...

to

...

configure

...

an

...

action

...

node

...

in

...

the

...

struts.xml

...

configuration

...

file

...

so

...

that

...

one

...

action

...

node

...

can

...

be

...

used

...

to

...


relate

...

several

...

different

...

Action

...

URLs

...

to

...

specific

...

methods

...

of

...

the

...

Action

...

class.

...

This

...

will

...

reduce

...

the

...

number

...

of

...

action

...

nodes

...

we

...

must

...

write

...

in

...

the

...

struts.xml

...

configuration

...

file.

{
Tip
}

The

[

Struts

2

user

mailing

list

|http://struts.apache.org/mail.html]

is

an

excellent

place

to

get

help.

If

you

are

having

a

problem

getting

the

tutorial

example

applications

to

work

search

the

Struts

2

mailing

list.

If

you

don't

find

an

answer

to

your

problem,

post

a

question

on

the

mailing

list.

{tip} h3. Example Application The example application that supports this tutorial

Example Application

The example application that supports this tutorial (Wildcard_Method_Struts2

...

available

...

at

...

http://code.google.com/p/struts2-examples/downloads/listImage Added.)

...

shows

...

how

...

to

...

use

...

Struts

...

2's

...

wildcard

...

method

...

selection

...

methodology.

...

The

...

example

...

application

...

is

...

just

...

a

...

simple

...

one

...

that

...

lists

...

some

...

people

...

and

...

lets

...

you

...

edit

...

them,

...

delete

...

them,

...

and

...

add

...

a

...

new

...

person

...

to

...

the

...

list.

...

Everything

...

that

...

the

...

application

...

needs

...

to

...

do

...

with

...

a

...

Person

...

(the

...

model

...

class)

...

is

...

controlled

...

by

...

the

...

Struts

...

2

...

ActionSupport

...

class

...

PersonAction.

...

The

...

PersonAction

...

class

...

has

...

several

...

different

...

methods

...

(e.g.

...

create,

...

edit,

...

delete)

...

that

...

are

...

called

...

depending

...

on

...

what

...

the

...

user

...

wants

...

to

...

do.

...

Wildcard

...

Method

...

Selection

...

Without

...

using

...

the

...

wildcard

...

method

...

selection

...

technique,

...

I'd

...

have

...

to

...

write

...

an

...

action

...

mapping

...

node

...

in

...

the

...

Struts

...

2

...

configuration

...

file

...

for

...

each

...

separate

...

action

...

I'd

...

want

...

to

...

call.

...

For

...

example:

{code:XML|title=
Code Block
XML
XML
title
Struts.xml
Action
Configuration
}

<action name="createPerson" class="org.apache.struts.tutorials.wildcardmethod.action.PersonAction" method="create">
  <result name="input">input.jsp</result>
  <result name="success">view.jsp</result>
</action>

<action name="editPerson" class="org.apache.struts.tutorials.wildcardmethod.action.PersonAction" method="edit">
  <result name="input">input.jsp</result>
  <result name="success">view.jsp</result>
</action>



{code}

So

...

even

...

for

...

this

...

simple

...

application,

...

I'd

...

have

...

to

...

write

...

four

...

separate

...

action

...

mapping

...

nodes

...

(create,

...

edit,

...

delete,

...

saveOrUpdate)

...

in

...

the

...

configuration

...

file.

...

So

...

you

...

can

...

easily

...

see

...

that

...

a

...

more

...

complex

...

application

...

can

...

have

...

dozens

...

of

...

action

...

mapping

...

nodes.

...

To

...

implement

...

the

...

wildcard

...

method

...

selection

...

technique

...

to

...

enable

...

the

...

Struts

...

2

...

framework

...

to

...

dynamically

...

select

...

the

...

correct

...

method

...

to

...

call

...

at

...

runtime

...

you

...

just

...

need

...

to

...

use

...

the

...

wildcard

...

character,

...

*,

...

in

...

your

...

name

...

value

...

and

...

an

...

attribute

...

value

...

place

...

holder

...

(

...

{1

...

}

...

)

...

for

...

the

...

method

...

value.

...

For

...

example:

{code:XML|title=
Code Block
XML
XML
title
Struts.xml
Action
Configuration
Using
Wildcard
Method
Selection
}

<action name="*Person" class="org.apache.struts.tutorials.wildcardmethod.action.PersonAction" method="{1}">
  <result name="success">view.jsp</result>
  <result name="input">input.jsp</result>
</action>

{code}

The

...

*

...

is

...

the

...

wildcard

...

character.

...

Any

...

action

...

name

...

values

...

that

...

end

...

in

...

"Person"

...

will

...

be

...

handled

...

by

...

this

...

action

...

mapping.

...

Whatever

...

value

...

is

...

before

...

"Person"

...

will

...

be

...

the

...

value

...

used

...

for

...

the

...

method

...

attribute

...

(the

...

{1}

...

place

...

holder

...

will

...

be

...

replaced

...

with

...

that

...

value).

...

For

...

example

...

this

...

URL:

...

http://localhost:8080/Wildcard_Method_Struts_2_Mvn/createPerson.action

...

Image Added

will

...

be

...

be

...

processed

...

by

...

the

...

the

...

above

...

action

...

mapping

...

and

...

method

...

create

...

of

...

class

...

action.PersonAction

...

will

...

be

...

called.

...

While

...

this

...

URL

http://localhost:8080/Wildcard_Method_Struts_2_Mvn/deletePerson.action

...

Image Added

will

...

cause

...

the

...

delete

...

method

...

of

...

class

...

action.PersonAction

...

to

...

be

...

called.

...

What

...

happens

...

if

...

we

...

have

...

a

...

URL

...

with

...

nothing

...

in

...

front

...

of

...

Person?

...

For

...

example:

...

http://localhost:8080/Wildcard_Method_Struts_2_Mvn/Person.action

...

Image Added

If

...

there

...

is

...

no

...

value

...

in

...

front

...

of

...

Person,

...

then

...

the

...

Struts

...

2

...

framework

...

will

...

call

...

the

...

execute

...

method

...

of

...

the

...

class

...

action.PersonAction.

...

Dynamic

...

Method

...

Invocation

...

The

...

wildcard

...

method

...

selection

...

technique

...

explained

...

above

...

should

...

not

...

be

...

confused

...

with

...

the

...

"Dynamic

...

Method

...

Invocation"

...

technique.

...

The

...

Struts

...

2

...

documentation

...

explains

...

this

...

technique

...

(which

...

uses

...

the

...

bang,

...

!,

...

operator

...

in

...

the

...

action

...

name)

...

and

...

recommends

...

against

...

using

...

the

...

"Dynamic

...

Method

...

Invocation"

...

technique

...

due

...

to

...

security

...

and

...

other

...

reasons

...

related

...

to

...

how

...

this

...

technique

...

is

...

implemented

...

internally.

...

The

...

Struts

...

2

...

documentation

...

also

...

recommends

...

turning

...

off

...

the

...

option

...

to

...

use

...

the

...

dynamic

...

method

...

invocation

...

by

...

setting

...

struts.enable.DynamicMethodInvocation

...

to

...

FALSE

...

in

...

the

...

Struts

...

configuration.

...

Summary

By using the wildcard method selection technique explained above, you can significantly reduce the number of action mapping nodes you need to write and manage in the Struts 2 XML configuration file.