Pelo meu contato com o guj sei que pouca gente se atreve a mexer com o JSP e o JSTL…
Bom… gostaria de saber, de mais de uma forma, como pegar o xml que eu monto no servlet e repassa-lo para o JSP para manipular ele com o <x:>. Dá pra fazer isso passando o Document como atributo? Tenho de transforma-lo em algum tipo de objeto, um OutputStream???
mas para fazer a transformação de XML para alguma outra coisa, coloque o codigo no teu servlet/action/bean e não na JSP
este papel não é dela
B
back
Como assim???
A situação pela qual optei trabalhar com o xml é pelo fato da estrutura de dados aqui ser bem pesada e eu não consegui achar uma forma de acessar os valores dos dados dentro de collections para que pudesse montar as tabelas…
Pode me ajudar Rodrigo??
Gustavo Guilherme BacK
obs: agora que vi, o post está no lugar errado…
urubatan
bom, para transformar em beans (se é isto que vc quer fazer)
pode utilizar o Digester
tem um tutorial muito bom sobre ele do CV na MundoJava No 1
caso queira só utilizar o XSLT para transformar em algum outro tipo de dados (XHTML??)
TransformerFactory tf = TransformerFactory.getInstance();File f = new File("meuArquivo.xsl");Transformer t = tf.netTransformer(new StreamSource(f));File sourceXML = new FIle("meuArquivoXML.xml");File resultXML = new File("xmlDestino.xml"); //aqui pode utilizar um ByteArrayOutputStream também para guardar o resultado em memoria)t.transform(new StreamSource(sourceXML),new StreamResult(resultXML));
bom, escrevi isto de cabeça agora, mas pode ser que te ajude,
é quase certo que o codigo não funcione de cara, mas o caminho é este
assim tu pode trabalhar com o proprio XML que tu ja tem, sem poluir a JSP com codigo para transformar ele em alguma coisa melhor para o usuário
B
back
Rodrigo,
O que eu ia fazer era exatamente trabalhar com o xml que eu gero a partir do JDBC consultando o Oracle9i para fazer a view no JSP usando o <x:> do JSTL. Agora criei um servlet que tem como única função me retornar o xml para tratar na JSP… mas ainda não consegui dar um parse pois está ocorrendo um erro.
Usar o <x:> diretamente no JSP é uma má prática, considerando que o xml vem da minha aplicação e o material exibido é uma tabela? Devo usar XSTL para solucionar isso???
Gustavo Guilherme BacK
urubatan
se for para montar só a tabela, pode ser uma boa ideia colocar o parse dele dentro da JSP, mas normalmente não é boa ideia fazer parse de XML dentro de JSP, uma ideia seria o proprio servlet fazer a transformação do XML baseado em um XSLT e armazenar este retorno em uma string, ai na JSP você faz apenas:
Estou começando a mexer com o JSTL, e ao contrário do que você recomendou estou manipulando o XML dentro do JSP. Porque essa não é uma boa prática?
Uma das coisas que me deparei agora é que se eu quiser utilizar uma variável na expressão XPath de um select"" me pareceu até agora não ser possível. Com o XSTL há como eu criar variáveis?
Gustavo Guilherme BacK
urubatan
da para passar parametros sim, só não lembro como faz, não mexo muito com isto
mas as paginas JSP são feitas apenas para a view do sistema, por isto que não é uma boa ideia tratar o XML dentro delas.
se for para fazer isto, pelo menos, cria um bean que faz este trabalho, e chama ele de dentro da JSP, ou melhor ainda, de dentro de um servlet/action e deste manda só o resultado ja processado para a JSP apenas desenhar a tela
B
back
Consegui ter uns progressos aqui… para referenciar um atributo dentro da XPath é só fazer assim <x:out select="/$trechoXML/tag[@atributo = $pageScope:variavel]">
Mas vou estudar a possibilidade de colocar meu código em XSTL mesmo… tenho de estudar mais MVC e os Patteners.