Es ist folgendermaßen beim Klick auf den Suchbutton geht er hier rein:
Suchfenster = new Object();
Suchfenster = window.open("Suche.htm", "", "width="+W+", height="+H+", resizable=yes, scrollbars=yes, toolbar=no, status=no, menubar=no, locationbar=yes, dependent=yes");
Suchfenster.focus();
-> interessanterweise funktioniert es ohne Probleme, wenn ich das Suchfenster im frames[4] anzeigen lasse, also den Textframe
Das ist nämlich der Aufbau des Fensters:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
<html>
<head>
<title>Test</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style></style>
</head>
<frameset rows="35,54,*" frameborder="NO" border="0" framespacing="0" bordercolor="#FFFFFF">
<frame name="Symbol" scrolling="NO" src="Symbol.htm" marginwidth="4" marginheight="4">
<frameset cols="80,*" frameborder="NO" border="0" framespacing="0">
<frame name="Logo" scrolling="NO" src="logo.htm" frameborder="no" framespacing="0" marginheight="0" marginwidth="0" >
<frame name="Head" scrolling="NO" src="kopf.htm" frameborder="no" framespacing="0">
</frameset>
<frameset cols="360,*" frameborder="NO" border="2" framespacing="2" bordercolor="#FFFFFF">
<frame name="Inhalt" scrolling="YES" src="/servlet/showTOC?pfad=cobra_sfmc&id=00000000&pis=j&symbol=plus.gif">
<frameset cols="*,0" frameborder="NO" border="2" framespacing="2" bordercolor="#FFFFFF">
<frame name="Text" src="/servlet/showDM?pfad=test&dmc=Test.xml&id=BUTTON_OK_CANCEL&style=ts.xsl">
<frame name="Grafik" src="grafik.htm">
</frameset>
</frameset>
</frameset>
<noframes><body bgcolor="#FFFFFF" style="font-family:Arial;">
</body>
</noframes>
</html>
Das ist der Link, den ich zusammenbastle, im Suchfenster/Ergebnis, also wird beim Klicken auf den Link showDM_afterSearch aufgerufen
<li style=\"white-space: nowrap;\"><a target=\"Text\" href=\"JavaScript:parent.frames[0].showDM_afterSearch(""+strFileName+"",""+strSuchbegriff+"",""+strDir+"");\">"+strBezeichnung+"</a> ("+iAnzahlTreffer+")</li>
die Funktion showDM_afterSearch:
function showDM_afterSearch(udn, strSuch, strPfad){
Such = strSuch;
sizeFrame("text");
if(strPfad.toLowerCase() == strDir.toLowerCase()){
parent.frames[4].location.href = "/servlet/showDM?pfad="+strPfad+"&dmc="+udn+"&id=&style=cs.xsl&such="+strSuch;
}else{
//hier würde er nicht reingehen
}
}
Und die Anzeige vom Servlet ist das hier:
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.Source;
import org.xml.sax.InputSource;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.xml.sax.SAXException;
import org.apache.xpath.XPathAPI;
import org.w3c.dom.*;
import javax.swing.JOptionPane;
public class showDM extends HttpServlet {
public void init(ServletConfig config) throws ServletException
{
super.init(config);
}
public void doGet (HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException
{
File fDM = null;
String strPfad = "", strDMC = "", strID = "";
String strClassDir = "", strStyle = "";
String strXMLPath = "", strXSLPath = "", strSuch = "";
DocumentBuilder db = null;
Document xmlDoc = null;
Source xslSource = null;
response.setContentType("text/html; charset=iso-8859-1");
PrintWriter out = response.getWriter();
// Uebergebenen Parameter aktLCN und pis ermitteln
strDMC = request.getParameter("dmc");
strPfad = request.getParameter("pfad");
strID = request.getParameter("id");
strStyle = request.getParameter("style");
if (strStyle == null ) {
strStyle = "ts.xsl";
}
strSuch = request.getParameter("such");
strClassDir=getClass().getResource("showDM.class").toString();
try {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
strXMLPath = strClassDir.substring(strClassDir.indexOf(":")+1,strClassDir.indexOf("JServ\\servlets"))+"apache\\htdocs\\"+strPfad+"\\dm\\";
fDM = new File(strXMLPath+strDMC);
if(fDM.exists() && fDM.canRead()) {
xmlDoc = dbf.newDocumentBuilder().parse(fDM);
}else {
}
} catch(ParserConfigurationException pce) {
JOptionPane.showMessageDialog(null, "Error of creating DocumentBuilder", "Fehler", JOptionPane.OK_CANCEL_OPTION);
} catch(SAXException se) {
JOptionPane.showMessageDialog(null, "Error of parsing", "Fehler", JOptionPane.OK_CANCEL_OPTION);
} catch(IOException ioe) {
JOptionPane.showMessageDialog(null, "IO-error of parsing", "Fehler", JOptionPane.OK_CANCEL_OPTION);
} catch(TransformerException te){
JOptionPane.showMessageDialog(null, "TransformerException"+te.getMessage(), "Fehler", JOptionPane.OK_CANCEL_OPTION);
}
strXSLPath = strClassDir.substring(strClassDir.indexOf(":")+1,strClassDir.indexOf("JServ\\servlets"))+"apache\\htdocs\\"+strPfad+"\\stylesheet\\";
xslSource = new StreamSource(new File(strXSLPath+strStyle));
DOMSource ds = new DOMSource(xmlDoc);
try{
out.println( "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer(xslSource);
transformer.setParameter("intSprung",strID);
transformer.setParameter("strSuch", strSuch);
transformer.transform(ds, new StreamResult(out));
} catch (TransformerConfigurationException tce) {
JOptionPane.showMessageDialog(null, "TransformerConfiException-xslSource:"+tce.getMessage(), "Fehler", JOptionPane.OK_CANCEL_OPTION);
} catch (TransformerException te) {
JOptionPane.showMessageDialog(null, "TransformerException-xslSource:"+te.getMessage(), "Fehler", JOptionPane.OK_CANCEL_OPTION);
}
out.close();
}
}
Was interessant ist, dass es geht, wenn ich das Suchergebnis im Frame Text anzeigen lasse, aber das geht halt nicht, weil der User ja evtl auch noch einen anderen Link vom Suchergebnis anklicken will.
Viele Grüße