|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Nov 2002
Messaggi: 4329
|
[servlet] out.println di contenuti dinamici?
non funziona una cosa (fatta a naso) del tipo (all interno di una servlet):
out.println("<jsp:include page=\"pagina.jsp\"/>"); nel senso che non si visualizza nulla nella pagina (nel sorgente html della pagina caricata pero ottengo <jsp:include page="pagina.jsp"/> che non include la pagina); la domanda è: come si puo ottenere un effetto simile? chiedo perche ho necessita di includere delle jsp in un div (tramite ajax) ma per il momento riesco solo a inserire codice html (testo, immagini,...) voglio poter fare in modo che ajax infili dentro il div target semplicemente un include di delle jsp opportune che visualizzeranno cio che devono visualizzare...come si fa? tnx...
__________________
|18k+|slk800|a7n8x|1Gb/ddr400|Gf4mx440|Pio108|WD 160Gb|Case|Uni|Album|AnimeClick|OneManga| |ClassicThrash!|BNR Metal|TrueMetal|Dime|Chuck| |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2002
Messaggi: 4329
|
si, la soluzione delle palle ce l ho: prendo un file (una jsp per esempio), lo leggo per righe, lo metto in una stringa....poi nella servlet out.println(stringaDelFile); ....cosi posso metterci dentro qualsiasi cosa, ok...ma va da se che non avrei il coraggio di presentarmi davanti a chi mi ha chiesto di fare il progetto (con che faccia potrei spiegare una cagata simile?)
deve esistere un modo intelligente per ottenere cio che mi interessa...right?
__________________
|18k+|slk800|a7n8x|1Gb/ddr400|Gf4mx440|Pio108|WD 160Gb|Case|Uni|Album|AnimeClick|OneManga| |ClassicThrash!|BNR Metal|TrueMetal|Dime|Chuck| |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Nov 2002
Messaggi: 4329
|
rettifico, non va neanche la soluzione delle palle: se devo inserire jsp in cui vi sia, per esempio, codice javascript, non funziona (probabilmente non prende gli elementi in modo giusto, non so)...eppure ci deve essere un modo, ho googlato il mondo e non trovo una ceppa........
__________________
|18k+|slk800|a7n8x|1Gb/ddr400|Gf4mx440|Pio108|WD 160Gb|Case|Uni|Album|AnimeClick|OneManga| |ClassicThrash!|BNR Metal|TrueMetal|Dime|Chuck| |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jul 2002
Messaggi: 4334
|
__________________
|Java Base| |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Nov 2002
Messaggi: 4329
|
la forward forwarda a una pagina...stavo usando ajax proprio perche non voglio che la pagina cambi (voglio refreshare solo un div nel quale si visualizzino dei contenuti qualsiasi)...altrimenti avrei fatto mille jsp diverse tutte con la stessa struttura e cambiando solo il pezzo che mi interessava (non posso credere che esista solo un metodo cosi orribile)
__________________
|18k+|slk800|a7n8x|1Gb/ddr400|Gf4mx440|Pio108|WD 160Gb|Case|Uni|Album|AnimeClick|OneManga| |ClassicThrash!|BNR Metal|TrueMetal|Dime|Chuck| |
|
|
|
|
|
#6 |
|
Member
Iscritto dal: Jan 2008
Città: roma
Messaggi: 296
|
out.println nelle servlet nn si usa + gia da deceni ...
e poi ( se ho ben capito ) tu leggi una jsp e la metti nella servlet ? beh non serve perche una jsp compilata E una servlet . non ho capito perche non usi le jsp ... cmq se vuoi aggiornare il div con ajav il tag <jsp:include nn servira a nulla ... xche quando entra in scena ajax il tag ormai e compilato ... |
|
|
|
|
|
#7 |
|
Member
Iscritto dal: Jan 2008
Città: roma
Messaggi: 296
|
creati una servlet che la tua funzione ajax chiamera , poi dentro (la servlet) ci metti qualcosa del genere
Codice:
response.setContentType("application/xml");
response.getWriter().write( qui ci metti il documento xml che visualizerai poi nella pagina ( come stringa ) );
response.getWriter().close();
response.flushBuffer();
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Nov 2002
Messaggi: 4329
|
è esattamente quello che faccio (ma non con xml, non saprei come maneggiarli)...ho capito empiricamente che scrivere write di una stringa tipo "<jsp:include bla bla..." non funzionerebbe...non risolvo comunque il problema; posso includere cio che voglio, anche un xml, ma a me serve includere una jsp (che a sua volta fara le cose che deve fare)...l alternativa è che io sbagli totalmente approccio al problema (che è possibilissimo giacche non ho esperienza e non vado matto per il web)
se cosi fosse, accetterei suggerimenti per fare la cosa seguente: voglio avere un unica jsp, con un div che cambi (un po di contenuti diversi); per esempio visualizzi il risultato di dati succhiati da un db (non so, una tabella con i dati e alcune operazioni possibili da fare su questi dati)...voglio che la pagina principale cambi possibilmente MAI (cioe niente sbattoni di mille jsp diverse e mille forward nella servlet)...finche si tratta di visualizzare solo dati (in pratica formattare una stringa e inserirla nel div) è una stupidaggine, ma vorrei che il contenuto infilato dentro questo fantomatico div sia dinamico (possa contenere form o gettare property da un bean)...chiedo troppo?
__________________
|18k+|slk800|a7n8x|1Gb/ddr400|Gf4mx440|Pio108|WD 160Gb|Case|Uni|Album|AnimeClick|OneManga| |ClassicThrash!|BNR Metal|TrueMetal|Dime|Chuck| |
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Nov 2002
Messaggi: 4329
|
dimenticavo:
Codice:
response.getWriter().write( qui ci metti il documento xml che visualizerai poi nella pagina ( come stringa ) );
__________________
|18k+|slk800|a7n8x|1Gb/ddr400|Gf4mx440|Pio108|WD 160Gb|Case|Uni|Album|AnimeClick|OneManga| |ClassicThrash!|BNR Metal|TrueMetal|Dime|Chuck| |
|
|
|
|
|
#10 |
|
Member
Iscritto dal: Jan 2008
Città: roma
Messaggi: 296
|
ma io non ho detto di mettere quella roba nella jsp ...
tu devi avere una jsp e una servlet ... nella jsp ci metti il codice di "pagina iniziale" ... qualcosa tipo Codice:
<%@ page contentType="text/html;charset=windows-1252"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252"/>
<title>Amministrazione</title>
<script>
function loadContent(key){
document.getElementById('content').innerHTML = someAjaxFunction("Servlet1?contenutoDaCarricare="+key);
}
</script>
</head>
<body>
<div id="content">
</div>
<input type="button" onclick="loadContent('content1.txt');"/><br />
<input type="button" onclick="loadContent('content2.txt');"/><br />
<input type="button" onclick="loadContent('content3.txt');"/><br />
</body>
</html>
Codice:
public class Servlet1 extends HttpServlet {
private static final String CONTENT_TYPE = "text/xml;";
public void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
String file = request.getParameter("contenutoDaCarricare");
// InputStream stream = this.getServletContext().getResourceAsStream(file);
// leggi il file in qualche modo
response.setContentType(CONTENT_TYPE);
response.getWriter().write("contenuto del file letto");
response.getWriter().close();
response.flushBuffer();
}
}
Codice:
function Ajax(URL){
this.getXMLInstance = function() {
var XHR = null,
browserUtente = navigator.userAgent.toUpperCase();
if(typeof(XMLHttpRequest) === "function" || typeof(XMLHttpRequest) === "object"){
XHR = new XMLHttpRequest();
}else if(window.ActiveXObject && browserUtente.indexOf("MSIE 4") < 0) {
if(browserUtente.indexOf("MSIE 5") < 0)
XHR = new ActiveXObject("Msxml2.XMLHTTP");
else
XHR = new ActiveXObject("Microsoft.XMLHTTP");
}
return XHR;
}
this.getMsg = function (){
var ajax = this.getXMLInstance();
var _response = "";
ajax.open("POST" , URL , false);
ajax.setRequestHeader("text/xml" , "application/x-www-form-urlencoded");
// ajax.send(queryString);
if(ajax.status == 200){
_response = ajax.responseText;
}
return _response;
}
}
function someAjaxFunction(url){
var ajax = new Ajax(url);
return ajax.getMsg();
}
|
|
|
|
|
|
#11 | |
|
Senior Member
Iscritto dal: Nov 2002
Messaggi: 4329
|
evidentemente non mi sono spiegato bene....faccio esattamente in quel modo, è dall' inizio che lo dico....e ho aggiunto che se il file che gli passo contiene roba tipo [...]<jsp:qualcosa ..../> [...] non funziona (e ora ho tranquillamente capito il perche)...io pero voglio ottenere esattamente quell effetto....cioe non mi interessa dargli in pasto un file con solo codice html (a quel punto ci scrivo hello world a mano)...voglio inserire nel div qualcosa che a sua volta peschi da un bean e mi restituisca le belle stringhette che vengano interpretate e visualizzate in maniera corretta. è decisamente da escludere che acceda al db, faccia le query, formatti i dati e li mandi indietro nel responsetext tutto nella servlet (sarebbe proprio una porcheria), in quel modo dei bean che uso me ne farei poco (mentre li devo usare)...
un problema piu marginale ma che da una googlata rapida non ho evinto è: io ho il mio grazioso bottone che chiama la f ajax che va al controller che rimanda il testo che va a finire nel mio magico div....se clicco quel bottone x volte nel div vanno a finire x copie del contenuto...deve esistere un trick per far si che cio sia evitabile, ma non lo conosco (o almeno sembra che non ci sia flush che tenga) ho capito anche cosa volevi dire con: Quote:
Codice:
<jsp:usebean bla bla......> <jsp:getproperty bla bla....> tolto che mi sono gia aggiustato (ho abbandonato l idea di ajax per tornare a fare mille crappy jsp e la servlet che forwarda a quella opportuna...sto ajax stava gia diventando troppo sbattone per una scemenza di progetto che devo fare), mi rimane la curiosita di rendere quello di cui ho parlato sopra con ajax
__________________
|18k+|slk800|a7n8x|1Gb/ddr400|Gf4mx440|Pio108|WD 160Gb|Case|Uni|Album|AnimeClick|OneManga| |ClassicThrash!|BNR Metal|TrueMetal|Dime|Chuck| |
|
|
|
|
|
|
#12 | |
|
Member
Iscritto dal: Jan 2008
Città: roma
Messaggi: 296
|
Quote:
Codice:
InputStream xsl = null;
InputStream xml = null;
PrintWriter out = response.getWriter();
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = null;
try{
transformer = tFactory.newTransformer(new StreamSource(xsl));
// setta un parametro da passare al file xsl
transformer.setParameter("xd" , bean.getXd());
transformer.transform(new StreamSource(xml) , new StreamResult(out));
out.close();
response.flushBuffer();
} catch (TransformerConfigurationException e) {
// TODO
} catch (TransformerException e) {
// TODO
}
|
|
|
|
|
|
|
#13 | |
|
Member
Iscritto dal: Jan 2008
Città: roma
Messaggi: 296
|
Quote:
|
|
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Nov 2002
Messaggi: 4329
|
provero a fare come dici (era probabilmente quello che mi serviva, ma mi devo skillare un attimo con xml) tnx!
eppure faccio innerHtml, non appendchild
__________________
|18k+|slk800|a7n8x|1Gb/ddr400|Gf4mx440|Pio108|WD 160Gb|Case|Uni|Album|AnimeClick|OneManga| |ClassicThrash!|BNR Metal|TrueMetal|Dime|Chuck| |
|
|
|
|
|
#15 |
|
Member
Iscritto dal: Jan 2008
Città: roma
Messaggi: 296
|
dacci n occhiata a questa guida xsl e anche a questa guida xml
xche nn posti un pezzo di codice cosi magari si riesce a capire meglio il problema ... |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 09:03.











|








