Могу ли я передать сложные параметры в апплет Java? - PullRequest
4 голосов
/ 26 января 2010

Я действительно новичок в Java, и мне нужно создать апплет для электронной подписи документов. Апплет будет вызываться из приложения веб-страницы ASP.Net.

Сейчас я встраиваю апплет в страницу как <object id="EDOCApplet" classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"> и отправляю параметры апплету так:

<PARAM id="EdocPath" NAME="EdocPath" value="\\some\where\file.txt" />

В апплете я могу получить значение, используя встроенный метод апплета getParameter("EdocPath");

Мне нужна возможность передать апплету список нескольких файлов и их «отображаемых имен». Например, было бы просто записать это как строку XML:

<DocumentList>
  <UnsignedDocument Path="\\some\wehere\file1.txt" Description="Whatever comes here" />
  <UnsignedDocument Path="\\some\wehere\file2.txt" Description="Something else" />
...

Однако, насколько я вижу в спецификации HTML4.01 , элемент HTML PARAM может не иметь содержимого и не имеет конечного тега.

Я рассматриваю следующие варианты:

  • html-кодирование структуры xml и отправка ее апплету в виде одного объекта PARAM
  • создание списка объектов PARAM и создание их имен, таких как «File1», «Description1», «File2», «Description2», «File3» ... затем в Java-апплете создайте цикл while для чтения имен файлов, пока есть есть.

Однако ни одно из решений не выглядит изящным. Вопрос в том, какова лучшая практика в этом случае?

Ответы [ 2 ]

1 голос
/ 26 января 2010

Вы также можете предоставить свой апплет общедоступным методом:

initFile(String path, String description)

и вызовите этот метод из кода JavaScript (в котором вы можете выполнить цикл)

var applet = getElementByTageName(applet);
applet.initFile("yourPath","yourDescription");
1 голос
/ 26 января 2010

Передайте их через запятую:

<param id="files" name="files" 
     value="\\some\where\file.txt,\\some\where\file.txt" />

и затем используйте String.split():

String[] fileNames = param.split(",");

В случае более сложных структур вы можете использовать JSON для их представления.

...