JSON + Struts 2 + javascript

Tenho uma aplicação struts e estou integrando uma aplicação jquery (http://code.google.com/p/jquery-week-calendar/) para inserir um calendario estilo google agenda.
Nela tenho um método funcionando e estou precisando adapta-lo a minha aplicaçao
Segue abaixo o método funcionando onde ele retorna um objeto com conteudo do seguinte array…

    function getEventData() {
        var year = new Date().getFullYear();
        var month = new Date().getMonth();
        var day = new Date().getDate();
        return {
		            events : [
		               {"id":1, "start": new Date(year, month, day, 12), "end": new Date(year, month, day, 13, 30),"title":"Lunch with Mike"},
		               {"id":2, "start": new Date(year, month, day, 14), "end": new Date(year, month, day, 14, 45),"title":"Dev Meeting"},
		               {"id":3, "start": new Date(year, month, day + 1, 17), "end": new Date(year, month, day + 1, 17, 45),"title":"Hair cut"},
		               {"id":4, "start": new Date(year, month, day - 1, 8), "end": new Date(year, month, day - 1, 9, 30),"title":"Team breakfast"},
		               {"id":5, "start": new Date(year, month, day + 1, 14), "end": new Date(year, month, day + 1, 15),"title":"Product showcase"},
		               {"id":6, "start": new Date(year, month, day, 10), "end": new Date(year, month, day, 11),"title":"I'm read-only", readOnly : true}
		            
		            ]}; 
    }

Logo para atender minhas necessidades, preciso fazer uma requisição ao meu servidor via ajax para retornar um objeto json com as suas respectivas propriedades para ser exibida na tela.
Segue abaixo a declaração e suas referencias:
Struts.xml

<package name="input" extends="json-default">
	  <action name="testeJson" class="eventsAction" method="teste">
	    <result type="json"></result>
	  </action>
	</package>		
</struts>

método na action “eventsAction”

public String teste() throws JSONException{
		JSONObject obj = new JSONObject();
		Integer year = new Date().getYear();
		Integer month = new Date().getMonth();
		Integer day = new Date().getDay();
		events = new ArrayList<Events>();
		
                //Objeto event(Integer id,Date start,Date end,String title);
                events.add(new Events(1,new Date(year,month,day,2,15),new Date(year,month,day,3,18),"teste" ));
		events.add(new Events(2,new Date(year,month,day,4,16),new Date(year,month,day,6,17),"teste1" ));
		events.add(new Events(3,new Date(year,month,day,7,17),new Date(year,month,day,8,18),"teste2" ));
		events.add(new Events(4,new Date(year,month,day,9,18),new Date(year,month,day,10,19),"teste3" ));
		obj.put("events", events);
		return Action.SUCCESS; 
	}

Novo método modificado

    function getEventData() {
        var year = new Date().getFullYear();
        var month = new Date().getMonth();
        var day = new Date().getDate();
        var myObj;
        var xmlHttp;
		try	{
			// Firefox, Opera 8.0+, Safari
			xmlHttp=new XMLHttpRequest();
		}catch (e){	// Internet Explorer
			try	{
				xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
			}catch (e){
				try{
					xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
				}catch (e){
					alert("Seu navegador não suporta AJAX!");
					return false;
				}
			}
		}
		
		xmlHttp.onreadystatechange = function() {
			if(xmlHttp.readyState==4){
				myObj = xmlHttp.responseText;
		    }
		}
		xmlHttp.open("POST","TIB2/testeJson.action",true);
		xmlHttp.send(null);
		alert("As informações serão exibidas");
		return eval('('+myObj+')');

    }

retorno:
{“events”:[
{“end”:“2009-10-03T03:18:00”,“id”:1,“start”:“2009-10-03T02:15:00”,“title”:“teste”},
{“end”:“2009-10-03T06:17:00”,“id”:2,“start”:“2009-10-03T04:16:00”,“title”:“teste1”},
{“end”:“2009-10-03T08:18:00”,“id”:3,“start”:“2009-10-03T07:17:00”,“title”:“teste2”},
{“end”:“2009-10-03T10:19:00”,“id”:4,“start”:“2009-10-03T09:18:00”,“title”:“teste3”}
]}

Logo não carrega-se nada na tela pois o conteudo da variavel myObj é Undefined;
Li que isto ocorre pois a requisição ajax é assincrona portanto o método javascript não espera resposta do servidor para continuar executando o método.
Preciso retornar o objeto “events” e seu array preenchido para ele ser exibido na tela.
Não sei também se desta forma return eval('('+myObj+')'); retornarei este objeto da forma correta.
Alguma ajuda por favor…

Att.

Amigo, você sabe que se usar as tags dojo (<sx:…) não pode usar nenhum outro javascript, não é?
Não seria isso que você está fazendo?

Acho q nao, pois estou precisando retornar essas informaçoes dentro do evento javascript, pois o calendario funciona desta forma (retornando um objeto “preenchido”), logo preciso chamar o metodo na minha action dentro da função javascript e nao na pagina

Como então acha que solucionaria meu problema??

A questão é que se você usar pelo menos 01 (uma) tag <sx:… em seu JSP, esse JSP NÃO SERÁ capaz de executar nenhum outro javascript[color=red]*[/color], seja simples, seja jquery.
A solução é não usar nenhum <sx:… no mesmo JSP que quiser usar javascript.

[color=red]*[/color] - Na verdade o JSP até executa javascripts, se for apenas invocada uma função escrita em outro JSP. Ocorre que as tags <sx:… DESCARTAM todos os conteúdos do JSP, entendeu?

saquei sim… mas este nao é o caso pois estou chamando na minha aplicação direto a pagina index.jsp do projeto do calendario
mas obrigado pela dica… vai ser de suma importancia nas próximas paginas
=)

Att.