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?