estou tentando setar o vetor em javascript com um vetor feito em java, mas quando eu tento isso ele nao aceita. Estou usando struts e fazendo da seguinte maneira:
JAVA
request.setAttribute(“vetor”, vetor);
JSP
var vetor = <bean:write name=“vetor” />;
vi que quando o valor é String, o vetor nao passa as aspas, entao coloquei as aspas no meu vetor do java, so que quando eu seto o vetor no javascript ele substitui as aspas pelas macros.
queria saber se tem outra forma de passar e recuperar esse vetor, ou se tem como o javascript nao substituir as aspas pelas macros.
Então, apartir do momento que o DWR enviou o array , esse array já é em javascript , basta vc manipular ele.
Vc deu uma olhada nas funções de callback do DWR ?
Aqui vai um exemplo:
// função do jquery , não importando para o momento
$(document).ready(
function(){
// aqui é a função de callback que recebe uma lista ( array )
function callBackGetTitlesOfBooks(titles){
// outras funções do jquery, essa por exemplo completa um combobox com o array
$("#titulo").autocomplete(titles);
$("#cadastrar").blur();
}
// aqui está a sacada do dwr, ele obtém a lista do servidor , invocando
// um método java, e depois passa a lista (que na verdade se tornou um array em javascritp)
// para a função de callback, e depois e só trabalhar com o array da forma que vc quiser
FacadeDwrForPageLivro.getTitlesOfBooks(callBackGetTitlesOfBooks);
}
);
A classe java:
@RemoteProxy(name="FacadeDwrForPageLivro")
public class FacadeDwrForPageLivro extends FacadeDWR {
@RemoteMethod
public List<String> getTitlesOfBooks() throws Exception{
// logica para retorna a lista que na verdade vai virar um array em javascript
}
}
Repare nas anotações :
[code]
@RemoteProxy(name=“FacadeDwrForPageLivro”) e @RemoteMethod [/code]
Perceba que a classe e o método ficou disponível e se vc analisar bem , o método na classe java não recebe nenhum parâmetro, a linha
acima recebe! isso acontece porque o método em java retorna uma lista que vai ser passado para o método callback em forma de array.
Para isso funcionar vc tem que add no seu web.xml a seguinte linha: