从window.showModalDialog(...)调用Servlet

时间:2012-02-22 06:08:48

标签: javascript internet-explorer java-ee servlets lifecycle

我从window.showModalDialog调用另一个应用程序上下文,但与以下工作混淆。在showModalDialg中传递参数的代码相同。

var myArguments = new Object();
myArguments.param1 = "Hello World :)";
window.showModalDialog("java2sTarget.html", myArguments, ''); 

我可以使用以下代码在生成的HTML中读取这些myArguments(参数):

<script>
  document.write(window.dialogArguments.param1);//Hello World :)
</script>

我无法使用查询字符串&amp;我发送myArguments(参数),因为我想隐藏Application用户的参数。

现在我从showModalDialog(..)

调用servlet
onclick="window.showModelDialog('http://localhost:7778/app/servlet/test',myArguments,'');" 

的onclick = “window.showModelDialog(的 'http://本地主机:7778 /应用/小服务程序/测试',myArguments, '');”

但据我所知

Servlet  --> Servlet container --> HTML+JS+CSS

因此JS将在最后阶段提供,但我想在第一阶段(Servlet)中使用。

现在,我需要根据myArguments(参数)在servelt代码中做出一些决定。

有没有办法在servlet代码中读取这些myArguments(参数)?

2 个答案:

答案 0 :(得分:0)

将其作为查询字符串中的请求参数传递。

var queryString = "param1=" + encodeURIComponent("Hello World :)");
onclick="window.showModelDialog('http://localhost:7778/app/servlet/test?' + queryString, myArguments, '');" 

不,没有其他选择。无论如何,请求URL在模式对话框中不可见。

答案 1 :(得分:0)

主要目标是隐藏用户的查询字符串,以避免滥用这些参数。 我尝试了下面的工作。

开发人员发送隐藏参数以获取源代码的相关信息(例如:DataBase)。我们还知道,我们可以使用Window.showModalDialog

dialogArguments中发送隐藏信息

解决方法:

(i)在使用Window.showModalDialog

致电jQuery.getJSON()之前,我从服务器获取了一步的相关信息

(ii)我在servlet端使用google-gson API将JavaBeans转换为Json字符串。Solution 1 Solution 2

(iii)使用jQuery.parseJSON

将JSON转换为javascript对象
var args = jQuery.parseJSON(json);
window.showModalDialog("pages/"+args.pageName, args, ''); 

我使用args.pageName来制作动态

请在此变通办法中提出改进建议。感谢