2012-02-22 113 views
0

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

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

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

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

我不能使用查询字符串&我发送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(参数)吗?

回答

0

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

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

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

+0

感谢老师,为您的建议。我从你的答案中学到了很多东西。但是这次隐藏来自用户的queryString的主要目标。 – Awan 2012-02-24 07:07:33

0

主要目标是隐藏来自用户的查询字符串以避免滥用这些参数。 我尝试了以下解决方法。

开发者发送隐藏参数,以获得相关信息的形式的源(e.g.:DataBase)。而我们也知道,我们可以在Window.showModalDialog使用dialogArguments

解决发送隐藏的信息:

(我),我从服务器一步法相关信息使用jQuery.getJSON()

调用Window.showModalDialog之前(二)我在servlet端使用google-gson API将JavaBeans转换为Json字符串。 Solution 1Solution 2

(iii)使用jQuery.parseJSON

var args = jQuery.parseJSON(json); 
window.showModalDialog("pages/"+args.pageName, args, ''); 

我用args.pageName,使事情的动态

请提出改进​​这项工作,围绕转换成JSON JavaScript对象。谢谢