Indica que uma classe é um controlador. Um controlador pode ter ações, com ou
sem métodos, várias identificações e uma ação padrão.
Uma ação pode ser representada por um método que pode ter ou não parâmetros
que podem ser objetos ou tipos primitivos. Se forem objetos, podem ser
criados mapeamentos para se definir como os valores de uma solicitação serão
injetados em suas propriedades. Se o método produzir um resultado, este será
processado e incluído na solicitação para posteriormente ser usada na visão.
As exceções lançadas dentro do método podem alterar o fluxo lógico da
aplicação.
Ex1:
@Controller(value="/index",defaultActionName="action1")
@ActionStrategy(ActionStrategyType.PARAMETER)
public class Index{
@Action
public void action1(){
...
}
@Action
public void action2(){
...
}
}
Mapeamentos:
Ação |
Método |
/index |
Index.action1() |
/index?invoke=action1 |
Index.action1() |
/index?invoke=action2 |
Index.action2() |
Ex2:
@Controller(value="/index/{invoke}")
@ActionStrategy(ActionStrategyType.PARAMETER)
public class Index{
@Action
public void action1(){
...
}
@Action
public void action2(){
...
}
}
Mapeamentos:
Ação |
Método |
/index/action1 |
Index.action1() |
/index/action2 |
Index.action2() |
Ex3:
@Controller
@ActionStrategy(ActionType.DETACHED)
public class Index{
@Action("/index/action1")
public void action1(){
...
}
@Action("/index/action2")
public void action2(){
...
}
}
Mapeamentos:
Ação |
Método |
/index/action1 |
Index.action1() |
/index/action2 |
Index.action2() |
Ex4:
@Controller("/index")
@ActionStrategy(ActionType.COMPLEMENT)
public class Index{
@Action("/action1")
public void action1(){
...
}
@Action("/action2")
public void action2(){
...
}
}
Mapeamentos:
Ação |
Método |
/index/action1 |
Index.action1() |
/index/action2 |
Index.action2() |