我可以将复杂参数传递给Java Applet吗?

问题描述:

我对Java真的很陌生,我必须创建一个用于以电子方式签署文档的小程序。该小程序将从ASP.Net网页应用程序调用。我可以将复杂参数传递给Java Applet吗?

现在,我嵌入小程序在页面作为<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 specification看到,PARAM HTML元素可能没有内容,它没有结束标签。

我考虑的选择,分别是:

  • HTML编码XML结构,并把它在一个单一的参数对象
  • 创建PARAM对象的列表,并构建自己的名字,如“给小程序File1“,”Description1“,”File2“,”Description2“,”File3“...然后在Java applet中创建一个while循环来读取文件名。

但是,没有一种解决方案看起来很优雅。问题是,这种情况下的最佳做法是什么?

通过他们逗号分隔:

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

然后用String.split()

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

在更复杂的结构的情况下,你可以使用JSON来代表他们。

+0

听上去很合理,在我的情况(我”将不得不考虑如何对描述进行编码,这些描述也可能包含逗号)。 但是如果我需要将更复杂的结构发送到小程序,像树一样,我该怎么办? – naivists 2010-01-26 07:49:30

+0

你可以使用JSON :) – Bozho 2010-01-26 10:18:49

+0

哦,是的,JSON!这应该够了吧。 – naivists 2010-01-26 20:13:48

您也可以提供你的小程序的公共方法:

initFile(String path, String description) 

,并呼吁从JavaScript代码这种方法(在其中您可以循环)

var applet = getElementByTageName(applet); 
applet.initFile("yourPath","yourDescription"); 
+0

这听起来不错!我怎么知道,何时调用JavaScript代码,Applet引发了一些“onload”事件?还是应该小程序本身尝试加载“URL:”javascript:initializeMe()“? – naivists 2010-01-26 12:12:26

+0

在我的代码中,我从applet(http://java.sun.com/products/plugin/1.3/docs/jsobject.html)调用回调来说“你好,我准备好了!”但我想有更好的方法来初始化Sun最近发布的applet。 – 2010-01-26 13:06:31