在基于Struts 2的应用程序中调用Javascript文件中的方法

问题描述:

我有Java类和JSP。在JSP中我包含了Javascript文件。
我有一个返回字符串的Java方法。
我想在JavaScript文件中调用此方法。
我该怎么做?在基于Struts 2的应用程序中调用Javascript文件中的方法

+0

将Java方法导出为http请求,并从js中发出请求 – qrtt1 2011-02-24 07:26:40

+4

请在每个句子的开头使用大写字母,用于缩写词(如JSP)以及单词'I'的任何用法。这篇文章是痛苦的尝试和阅读。另一个提示:不要忘记给“我如何做这个?”等问题添加问号(?)。 – 2011-02-24 07:28:44

Struts是一个服务器端框架,所以你的Java运行在你的服务器上。

JavaScript通常在浏览器中运行(并且听起来不像您涉及任何SSJS解决方案)。

因此:你不能。这些程序在不同的计算机上运行,​​无法直接交互。

您需要发出一个新的HTTP请求,包括可以检索到的数据(例如查询字符串)。您可以通过设置location,生成<form>并调用其submit()方法,使用XMLHttpRequest对象,动态添加<script>元素以及适当地设置src元素以及各种其他方法来执行此操作。

+0

我想验证一些文本字段(例如文本字段不能为空)。以及我想要验证哪个文本字段来自java方法中的字符串值。 – user608032 2011-02-24 07:30:08

+0

这不会改变我刚刚解释的任何限制。您应该尝试弄清楚如何将该信息与页面的其余部分一起提供给浏览器。 – Quentin 2011-02-24 09:57:24

您可以将Java/JSP字符串作为JS变量直接写入页面主体。 (如果我理解正确,我不确定我是否确定)。

+0

是的,保持简单。 ''。 – BalusC 2011-02-24 12:59:16

+0

我在js文件中使用了这段代码: var collegename ='$ {collegename}'; 关于学院名称有getter/setter在行动类的alert(“collegename”+ collegename) 。 但它显示colloge名称是未定义的, – user608032 2011-03-01 06:35:19

你的意思是两件事中的任何一件。

要么在渲染时调用该方法,并在Javascript中包含输出。为此,请使用JSP调用该方法。

或者你想调用'运行时'的方法。如果是这样,您需要从浏览器进行ajax调用,并以此方式调用该方法。你可以使用不同的技术(想到jax-rs)。也许struts已经有了一些东西;不确定。基本上,你向一个servlet发出一个http请求。 servlet调用你的方法并返回响应。然后你的JavaScript处理响应。

你的意思是说你的JSP里有如下的东西吗?

<script type="text/javascript"> 
    <s:property value="JSMethodName"/>(); 
<script> 

我的意思是上面会调用特定的JS方法一次......你甚至可以包装在一个迭代<s:property>标签拨打电话的方法......可能更好地修改上面的页面加载后。

如果上述不足,您可以使用ajax方法动态地返回JS方法列表并调用它们......因为我会建议使用jquery和S2 JSON插件。