[RESOLVIDO] VRAPTOR 3 - Dúvida de iniciante

6 respostas
R

CAros, boa noite.

Estou com uma dúvida que é bem básica, mas não encontrei a resposta que se encaixe para a pergunta abaixo:

To usando JQUERY no objeto que faz busca dinâmica sem submit:

<a href="#">
						<div class="ui-widget">
							<label for="tags">Linguagens: </label>
							<input id="tags">
						</div>
		</a>
Com o seguinte Javascript:
<script>
	$(function() {

	
		var availableTags =[
			"ActionScript",
			"AppleScript",
			"Asp",
			"BASIC",
			"C",
			"C++",
			"Clojure",
			"COBOL",
			"ColdFusion",
			"Erlang",
			"Fortran",
			"Groovy",
			"Haskell",
			"Java",
			"JavaScript",
			"Lisp",
			"Perl",
			"PHP",
			"Python",
			"Ruby",
			"Scala",
			"Scheme"
		];
		$( "#tags" ).autocomplete({
			source: availableTags
		});
	});
	</script>

A dúvida é a seguinte: Ao invés de colocar as linguagens no array, quero usar uma variável do tipo ${linguagens};Qual a melhor prática? anoto uma classe inteira pra retornar um método que devolva esse array? ou faço uma variável no construtor que faça esse trabalho?
podem me ajudar? Vi que se usar o @SessionScoped, somente carregara uma vez por sessao...e é exatamente o que quero....
Agradeço a todos!

6 Respostas

Lucas_Cavalcanti

essa lista vai ser fixa, ou vai estar guardada em algum lugar, tipo o banco de dados?

R

Banco de Dados…mas o ideal é que somente no primeiro acesso ela seja carregada, pois não é um dado atualizado com tanta frequência, porém não é legal fixa no fonte…
Valeu!

Lucas_Cavalcanti

se vc pesquisar por cache de segundo nível do hibernate, ele mesmo cuida de não ficar buscando esses dados do banco toda hora…

mas mesmo sem isso, vc pode no controller que mostra essa jsp, fazer:

result.include("availableTags", codigoQueBuscaElas());
R

Lucas, obrigado pela resposta..acho que é por aí mesmo!
implementei a rotina que devolve o array de opcoes...
mas ficou a duvida: como faço pro controller devolver o valor pra variável (javascript), porem sem redirecionar...

meus codigos estao assim, mas não está funcionando:

Jsp:
function carregaitensbusca(){
	
		$('#content').load('<c:url value="/logica/populabusca"/>');
	
	}

Controller:

result.include("availableTags", estacaodao.alimentaComboBusca()).nothing();

Desde já agradeço a ajuda!
abs

Lucas_Cavalcanti

vc pode retornar um json com as tags, e usar esse json pra montar a parte da tela que vc quer mudar…

algo como:

result.use(Results.json()).from(estacaodao.alimentaComboBusca(), "availableTags").serialize();

e no javascript:

$.getJSON('<c:url value="/logica/populabusca"/>', function(json) {
    var tags = json.availableTags;

    //mexe na tela com esses valores
});
R

Valeu Lucas! Deu certinho...
O JSP ficou assim:

var availableTags;
  

	$(function() {

		$.getJSON('<c:url value="/logica/populabusca"/>', function(json) {  
		    availableTags = json.availableTags;  
		     $( "#tags" ).autocomplete({
				source: availableTags
				
			});
		});

		
	});
	</script>
Criado 7 de maio de 2012
Ultima resposta 10 de mai. de 2012
Respostas 6
Participantes 2