Pessoal, penei muito para encontrar a solução para um problema simples :
Criar uma Action no Struts 2 que respondesse a uma requisição ajax do JQuery
sem usar XML de configuração do Struts, apenas as anotações ( considerando as configurações padrão, é claro ).
Em toda a internet parece que dão mais valor para as configurações pelo XML,
mas a despeito de filosofar sobre vantagens e desvantagens, aí vai a minha maneira
de resolver o problema:
Objetivo : digitar algo em um campo texto e uma ajuda aparecer em uma div.
Na página HTML:
<div style="color: #666666; float:right; width:70%; height:33px" class="helper_result"></div>
<input class="helper_ajax" id="icmn_mensagem" />
No arquivo de script:
$(".helper_ajax").keyup(function() {
var idhelper = $(this).attr("id");
$.post('ajaxHelper', { "id_helper": idhelper } , function(data) {
$('.helper_result').html(data);
});
});
A Action Struts 2 :
package casnav.projeto.action;
import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.StrutsStatics;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.convention.annotation.Result;
import com.opensymphony.xwork2.ActionContext;
@Action(value="ajaxHelper", results= {
@Result(name="ok", type="httpheader", params={"status", "200"})
})
@ParentPackage("default")
public class HelperAjaxAction {
public String execute(){
HttpServletRequest request = (HttpServletRequest) ActionContext.getContext().get(StrutsStatics.HTTP_REQUEST);
String id_helper = request.getParameter("id_helper");
try {
((HttpServletResponse)ActionContext.getContext().get(StrutsStatics.HTTP_RESPONSE)).getWriter().write("Teste de help : " + id_helper);
} catch (IOException ex) {
System.out.println("[HelperAjax] Erro respondendo AJAX.");
}
return "ok";
}
}
Espero que ajude.
EDIT : Corrigir erros de português.
