Opdater vindue 2 ved submit i vindue 1.

Tags:    java

Baggrundshistorie :

I vores kantine skal man kunne "købe" mad ved at kører sit ID kort igennem en stregkodelæser. Når dette gøres, tjekkes om nummeret eksisterer i medarbejder databasen (via php/sql)
Hvis det eksistere, får man en menu side, hvor man vælger hvilke menu og hvormange af hver menu man vil ha'.
Dette sættes så ind i DB'en og man får så første side igen, så næste "kunde" kan bestille.
Så lang så godt...

Maskinen der håndterer bestillingerne har 2 skærme på, en til bestilling, og en hvor køkkenet kan se hvad der bestilles.

Problemet:
Når "kunden" køber en menu, skal køkkenet jo kunne se hvad der købes, og af hvem.
Derfor har jeg brug for et script der opdaterer køkkenets liste (browser window) hver gang man submit'er sin bestilling.

Jeg kunne forstille mig noget ala :

window.opener.status="et eller andet";
window.close();

Men da java er helt uden for min viden, vil jeg her bede om lidt hjælp til hvordan jeg får opdateret browser vindue nr. 2 når man submitter i browser vindue nr. 1 som jo så sendes tilbage til "forsiden"..

På forhånd tak
Svend



5 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 4 karma
Sorter efter stemmer Sorter efter dato
Du skal broge et observer-mønster:

public interface Observer {
public void sendNotify(String s);
}

public interface Subject {
public void registerInterest(Observer obs);
}

public class WindowOne extends JFrame implements Subject {
private Vector observers; //vi bruger en Vector selvom der kun er en observer
private WindowTo winto;
public WindowOne() {
observers = new Vector();
winto = new WindowTo(this);
}
public void registerInterest(Observer obs) {
observers.addElement(obs);
}
public void itemStateChanged(ItemEvent e ) {
if (submit) notifyObservers( submit );
}
private void notifyObservers(String submit) {
for ( int i = 0; i < observers.lenght(); i++) {
((Observer)(observers.elementAt(i))).sendNotify( submit );
}
}
}

public class WindowTo extends JFrame implements Observer {
public WindowTo(Subject s) {
s.registerInterest(this);
}
public void sendNotify(String su) { //metode som kaldes via Subject fra WindowOne
if (su.equels(submit)) this.update();
}
}

nu ved jeg jo ikke hvad skærmene hedder, men Window et eller andet eller noget tredje, men dette er den kode, som skal tilføjes de to klasser, som styrer skærmene, plus to interface, som tilføjes applikationen.
WindowOne initierer en instans af WindowTo ved at kalde WindowTo's constructor med sig selv som argument. WindowOne registrerer WindowTo som observer, og sender besked om opdatering og kan registrerer uendeligt mange observatører.
Jeg tror ikke det bliver enklere at at udelade Vectoren, selv om der kun er en observertør, der skal skrives stort ser lige så meget kode alligevel.

Nils G H Waale



Kan du ikke bare lave sådan at skærmen inde i køkkenet opdatere f.eks. hvert minut?? Og så fanger den jo nye bestillinger.

Mvh
Jesper
www.zig-software.dk
jtp@zig-software.dk



Kan du ikke bare lave sådan at skærmen inde i køkkenet opdatere f.eks. hvert minut?? Og så fanger den jo nye bestillinger.

Mvh
Jesper
www.zig-software.dk
jtp@zig-software.dk


Jo, og Nej (Mest Nej).

<?php
header("refresh:60"); /* Opdater for hvert 60. sekund */
?>
Hedder den slags i PHP ;-)

Men det var ikke det jeg gik efter.
Jeg ønsker ikke siden skal stå og lave unødig trafik mod sql serveren ved at lave query's hvert minut, men KUN når der submittes fra menu siden.
Derfor ønsker jeg at browser vindue nr.2 opdateres når der submit'es i browser vindue nr.1

En anden ting er at vi har regnet ud at der kan laves ca. 15 bestillinger pr. minut, så køkkenet kommer håbløst bagud hvis dette er tilfældet.
At de så kun kan nå at lange ca. 5 bestillinger over disken pr. minut, er en helt anden snak ;-)

Ellers skal du da have mange tak for dit indlæg :-)

MVH
Svend




Hvis det skal opdateres, så skal du jo på en måde have "kontrol" over den computer, der står i køkkenet, da du jo ellers ikke kan give den besked om at lave refresh... Så hvis den side måske reloades automatisk som tidligere nævnt, ville det være nemmere - fx med et interval på 20 sek... Eller lave en knap, der så reloader siden, så kan de trykke på den, når de får tid til at lave mere...

mikl | mikl@mikl.dk | MSN: mikl@mikl.dk



Hvis det skal opdateres, så skal du jo på en måde have "kontrol" over den computer, der står i køkkenet, da du jo ellers ikke kan give den besked om at lave refresh... Så hvis den side måske reloades automatisk som tidligere nævnt, ville det være nemmere - fx med et interval på 20 sek... Eller lave en knap, der så reloader siden, så kan de trykke på den, når de får tid til at lave mere...

mikl | mikl@mikl.dk | MSN: mikl@mikl.dk


Øhm ? " have "kontrol" over den computer" ?
Den forstod jeg ikke, jeg har vel al den kontrol over den jeg vil have..
Maskinen har inten tastatur eller mus, kun en stregkodelæser, så en refresh knap er ikke hensigtsmæssigt i denne forbindelse.
Og igen, når siden loades/refresh'es, laver den en query ned i databasen, og for at undgå al for meget unødig trafik på nettet, vil en automatisk refresh hvert 20 sekund heller ikke være hensigtsmæssigt.

---------------------

Jeg har læst noget om at man med JavaScript kan åbne, lukke og/eller opdatere "parrent window" fra et "child window",og det kunne jo evt. være løsningen.
Er der ikke en frisk Java guru der kunne hjælpe mig med formuleringen af det ?

MVH Svend




t