Bonjour à tous,

je viens à vous pour vous exposer mon problème.

Je suis sous Struts 1.3.9 que j'utilise dans des jsp/jstl.

Je souhaiterais afficher un document pdf (ou autre selon le type mime) dans une frame de ma page.
J'arrive parfaitement à recupérer le flux pdf et à l'afficher dans une page normale via une dispatchAction charger.do?methode=visualiser.

Bref cette action marche et renvoi ce que je veut. Maintenant mon soucis c'est de l'ouvrir dans une frame (html:frame ? ou une iframe je ne sais pas).

j'ai tenté

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
<html:frame action="/document/charger.do?methode=visualiser&idDocument=idDeMonDoc" /> (tenté aussi avec forward)
 
<frame>
<c:redirect url="/document/charger.do?methode=visualiser&idDocument=idDeMonDoc">
</frame>
Je n'arrive pas à faire en sorte que l'action spécifié dans la frame soit exécutée et affiche le contenu dans ma frame.


Voilà le code de mon action :

Code java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
public ActionForward visualiser(ActionMapping pMapping, ActionForm pForm,
			HttpServletRequest pRequest, HttpServletResponse pResponse)
			throws java.lang.Exception {
 
		DetailDocumentForm lDetailDocumentForm = (DetailDocumentForm)pForm ;
		String idDocument = pRequest.getParameter(IWebConstantes.PARAM_ID_DOCUMENT);
		UtilisateurBean lUtilisateurBean = (UtilisateurBean) pRequest.getSession().getAttribute(IWebConstantes.SESSION_UTILISATEUR);
		DocumentManager.getInstance().loadDocumentContentsInCache(lUtilisateurBean.getLogin(),lUtilisateurBean.getPassword(),lDetailDocumentForm.getId());
 
		byte[] lOutput = null;
		String lMimeType = "";
		String lNameOutput = "";
 
		//initialisation des listes pour la récuperation des valeurs des elements
		List <byte[]> lListOutputs = new ArrayList<byte[]>();
		List <String> lListMimeTypes = new ArrayList<String>();
		List <String> lListNameOutput = new ArrayList<String>();
 
		//recuperation des element contenant le document, son type mime et son nom
		Element lOutputElement = ((CacheManager) ApplicationContext.getInstance()
				.getParameter(IWebConstantes.CACHE_CONTENT)).getCache(IWebConstantes.CACHE_CONTENT_NAME).get(idDocument);
		Element lMimeElement = ((CacheManager) ApplicationContext.getInstance()
				.getParameter(IWebConstantes.CACHE_CONTENT)).getCache(IWebConstantes.CACHE_CONTENT_NAME).get(idDocument+"Mime");
		Element lNameElement = ((CacheManager) ApplicationContext.getInstance()
				.getParameter(IWebConstantes.CACHE_CONTENT)).getCache(IWebConstantes.CACHE_CONTENT_NAME).get(idDocument+"Name");
 
		try {
			//recuperation de la valeur des element
			lListOutputs = (List<byte[]>) lOutputElement.getValue();
			lListMimeTypes = (List<String>) lMimeElement.getValue();
			lListNameOutput = (List<String>) lNameElement.getValue();
 
				if(lListOutputs.size()==1 && lListMimeTypes.size()==1 && lListNameOutput.size()==1){
					//attribution des elements
					lOutput = lListOutputs.get(0);
					lMimeType = lListMimeTypes.get(0);
					lNameOutput = lListNameOutput.get(0);
				}
				else{
					System.out.println("getByteOutPut : Plusieurs documents sont récupérés size = "+ lListOutputs.size());
				}
		} catch (Exception e1) {
			// TODO Bloc catch auto-généré
			System.out.println(e1.getMessage());
		}
 
		  pResponse.setContentType(lMimeType);
		  pResponse.setHeader("Content-disposition", "inline; filename=\"" + lNameOutput + "\"");
 
		  OutputStream os = pResponse.getOutputStream();
		  ByteArrayOutputStream bos = new ByteArrayOutputStream();
 
		  try {
		    bos.write(lOutput);
		  } catch(Exception e) {
		    System.out.println("OpenPdf Exception : " + e.getMessage()); 
		  }
 
		  pResponse.setContentLength(bos.size());
 
		  os.write(bos.toByteArray(), 0, bos.size());
		  os.flush();
		  os.close();
 
		  return pMapping.findForward(IStrutsConstantes.FORWARD_SUCCESS);
	}

Elle renvoie bien le fichier pdf et permet un affichage dans la page.

Ce que je voudrais savoir c'est comment faire en sorte que ce fichier pdf s'ouvre dans une balise de type frame,html:frame ou iframe ou encore une balise <object> si possible (Je préfère éviter d'utiliser des frames si il y a le choix)

Merci à ceux qui ont lu et merci d'avances a ceux qui ont une solutions et qui veulent bien la partager!