Esse artigo completa o anterior apresentando actions e results, as outras duas coisas essenciais do struts. O Struts 2 processa as requisicoes usando interceptors, actions e results. Uma Action e o item central e mais basico no Struts. Uma Action consiste no mapeamento de um identificador para um manipulador. Quando e feita uma requisicao para esse identificador, entao o framework usa o mapeamento para determinar como processar a solicitacao. O Result e o elemento que especifica o resultado da Action. A action retorna uma String que deve ser um dos identificadores mapeados no seu conjunto de results. A maioria serve simplesmente para encaminhar para outras paginas, porem pode ser usado para coisas bem mais interessantes, como sera visto no artigo Uau!! O Struts faz tudo isso ... (Tambem nao esta bom, ainda pensarei num nome melhor). O mapeamento da action pode especificar um conjunto de results, com tipos de results diferentes, um conjunto de manipuladores de excecao, e a pilha de interceptors. Porem apenas o atributo name e necessario. Explicando de uma forma muito mais util e pratica. Criamos um metodo numa classe Java que extenda ActionSupport que retorne String. Fazemos o mapeamento desse metodo com um nome (identificador) utilizando annotation ou XML para isso, e incluimos um conjunto de results que representam o retorno desse metodo. Entao ao fazer uma requisicao, chamaremos o identificador mapeado, que ira executar o metodo e atraves da string de retorno do metodo, uma pagina sera escolhida para o response (o framework ira redirecionar para essa pagina). Veja no Exemplo: @Action(value = "iniciar", results = { @Result(name = com.opensymphony.xwork2.Action.SUCCESS, location = "inicial.jsp"), @Result(name = com.opensymphony.xwork2.Action.ERROR, location = "erro.jsp") }) public String iniciar() {... Uma action foi criada com o identificador iniciar e com dois results. Ao fazer uma requisicao para essa action a partir de um form HTML com action=iniciar.form, o metodo iniciar()* sera executado e de acordo com o retorno desse metodo, que pode ser com.opensymphony.xwork2.Action.SUCCESS ou com.opensymphony.xwork2.Action.ERROR, havera um redirecionamento para a pagina inicial.jsp ou erro.jsp. * O metodo iniciar poderia ter qualquer outro nome, nao necessariamente o mesmo nome do identificador da action. Caracas!! Nao foi necessario criar a servlet e seu mapeamento, nem os metodos doGet/doPost, nem criar condicoes para tratar a requisicao a partir de determinado metodo e carregar o resultado no response!!!! Tudo isso foi resolvido com uma action ridicula mapeada por um identificador com alguns results. E, realmente o Struts ajuda. Mas veja bem! O Struts nao se limita a isso. E voce vera algumas coisas a mais no artigo mais esperado do seculo (neste blog, sobre Struts 2, ate agora ...)*.*Se mesmo com essas condicoes ainda voce achar o artigo nao sera mais esperado do seculo, sugira outras.Referencias: http://struts.apache.org/2.2.1/docs/guides.html Consideramos que um objeto e Detached quando ele estava em um estado persistente, mas sua sessao foi fechada. E comum isso acontecer em aplicacoes, principalmente ao alterar objetos, suponha a seguinte situacao: Voce efetua a listagem de determinada entidade e seleciona uma delas para alterar, ou apenas informa um codigo da entidade que deseja alterar. Entao para abrir a