Anonymní profil Winsik – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil Winsik – Programujte.comAnonymní profil Winsik – Programujte.com

 

Příspěvky odeslané z IP adresy 62.84.131.–

winsik
Java › Applet, získávání dat z form…
12. 1. 2012   #152290

Tak konstrukce s this volaná na získaném elementu mi nefunguje, musím vždy uvést identifikátor.

udělal jsem to takto:

JSObject browserWindow = JSObject.getWindow(signerApplet);     
String ident = "document.getElementById('" + getDataInputField(index) + "')";     

int length = (Integer) browserWindow.eval(ident + ".value.length");     
     
for (int pos = 0; pos < length; pos += 1024*1024) {
  data += (String) browserWindow.eval(ident + ".value.substr(" + pos + ",1024*1024)");
}           
     
return Base64Utils.base64Decode(data);
 

Problém mám s řádkem:

int length = (Integer) browserWindow.eval(ident + ".value.length");

Při určité velikosti se začne jednat nikoli o integer ale o double a dostávám ClassCastException, jasně, můžu si to zjistit pomocí instanceof, ale přijde mi to jako divné chování a nevím, jestli tím tento problém zcela vyřeším.

if (lengthJSObject instanceof Integer) {
        length = (Integer) lengthJSObject;
      }else if(lengthJSObject instanceof Double){
        length = ((Double) lengthJSObject).longValue();
      }else{
        throw new ClassCastException("Velikost, vrácená z javascriptu");
      }

Jakou by to mohlo mít příčinu?

winsik
Java › Applet, získávání dat z form…
9. 1. 2012   #152099

#2 zlz

Díky za tip, nevěděl jsem, že výsledkem eval může být i jen String.

Během dneška vyzkouším a přidám a případně i přidám své řešení

Winsik
Java › Applet, získávání dat z form…
5. 1. 2012   #151985

Ahoj,

řeším problém s jedním starším projektem. Jedná se o Applet, který podepisuje a šifruje data. S vnějším světem komunikuje prostřednictvím formuláře v html stránce, odkud bere z formulářového prvku vstupní data. Část starající se o získání dat je následující:

JSObject browserWindow = JSObject.getWindow(signerApplet);

JSObject inputField = (JSObject) browserWindow.eval("document.getElementById('" + getDataInputField() + "')");

String data = (String) inputField.getMember("value");

Toto řešení funguje bez problémů, dokud vstupní data nejsou příliš velká. v Případě větší velikosti, cca 10mb vrátí metoda getMember pouze null, bez jakékoli výjimky, chyby v konzoli, nebo známky toho co by mohlo být špatně. Už několik dní hledám řešení ale marně. Zkoušel jsem navýšit velikost paměti v nastavení control panelu, pomocí.

Řešili jste někdo takovýto problém s JSObject? Případně jakým způsobem byste získávali větší množství dat z html formuláře do appletu?

Předem díky za odpověď
Winsik

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý