我可以将复杂参数传递给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来代表他们。
您也可以提供你的小程序的公共方法:
initFile(String path, String description)
,并呼吁从JavaScript代码这种方法(在其中您可以循环)
var applet = getElementByTageName(applet);
applet.initFile("yourPath","yourDescription");
这听起来不错!我怎么知道,何时调用JavaScript代码,Applet引发了一些“onload”事件?还是应该小程序本身尝试加载“URL:”javascript:initializeMe()“? – naivists 2010-01-26 12:12:26
在我的代码中,我从applet(http://java.sun.com/products/plugin/1.3/docs/jsobject.html)调用回调来说“你好,我准备好了!”但我想有更好的方法来初始化Sun最近发布的applet。 – 2010-01-26 13:06:31
听上去很合理,在我的情况(我”将不得不考虑如何对描述进行编码,这些描述也可能包含逗号)。 但是如果我需要将更复杂的结构发送到小程序,像树一样,我该怎么办? – naivists 2010-01-26 07:49:30
你可以使用JSON :) – Bozho 2010-01-26 10:18:49
哦,是的,JSON!这应该够了吧。 – naivists 2010-01-26 20:13:48