2011-02-24 22 views
0

我有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

回答

2

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

1

您可以將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

0

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

要麼在渲染時調用該方法,並在Javascript中包含輸出。爲此,請使用JSP調用該方法。

或者你想調用'運行時'的方法。如果是這樣,您需要從瀏覽器進行ajax調用,並以此方式調用該方法。你可以使用不同的技術(想到jax-rs)。也許struts已經有了一些東西;不確定。基本上,你向一個servlet發出一個http請求。 servlet調用你的方法並返回響應。然後你的JavaScript處理響應。

0

你的意思是說你的JSP裏有如下的東西嗎?

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

我的意思是上面會調用特定的JS方法一次......你甚至可以包裝在一個迭代<s:property>標籤撥打電話的方法......可能更好地修改上面的頁面加載後。

如果上述不足,您可以使用ajax方法動態地返回JS方法列表並調用它們......因爲我會建議使用jquery和S2 JSON插件。

相關問題