2011-06-14 32 views
1

以下是調用struts動作的Javascript函數調用,該動作又解析爲jsp。在打開的Jsp頁面在一個單獨的窗口中,我有一個帶有幾個文本框的表單,然後下拉並提交按鈕。當我提交填充表單時,我無法獲取所有這些表單字段,但這些實例變量是在動作類中定義的。我在這裏失蹤?如何通過Javascript在新窗口中打開jsp時將表單參數傳遞給Action類

function editQuestions(val) { 
    window.open("fetchQuestionAction.action?"+ 
     "quesId="+val,'mywindow','width=400,height=200'); 
} 
+3

您不需要在Struts2中打開jsp頁面。您(瀏覽器)打開一個映射到顯示(通常)jsp的操作的url。我無法理解你在做什麼。也許你應該包含一些涉及的模式(url,actions,jsp)。 – leonbloy 2011-06-14 17:35:22

+0

你應該在queston中給出子窗口的代碼。你得到的錯誤是什麼?你有沒有試過Mark Guk的第二種選擇? – anu 2011-06-15 06:19:58

回答

1

對於獲取數據在新窗口中,您可以:

  1. POST數據到不同的動作,將它放到會話。然後打開窗戶。 POST操作應通過AJAX完成,以避免不必重新加載頁面。
  2. 將窗體字段中的數據添加到window.open第一個參數的URI的查詢字符串中。然後,您可以在服務器上使用此數據來呈現新頁面,或者僅將其發送到隱藏字段並在客戶端上使用。
+0

我在使用window.open調用子JSP的父JSP上提交子jsp,但無法在動作類中提取子jsp的表單字段 – Sam 2011-06-15 05:32:52

+0

看起來像是缺少一些東西。當您通過window.open()打開新的「JSP」時,您可以在客戶端上執行該操作。所以當子頁面被渲染時,你得到了被調用的Child-Action。由於此頁面並未由用戶提交,因此您在Child-Action中沒有任何內容。 看起來你的問題不在window.open中,但在JSP本身中,所以Struts沒有將POST參數設置爲Action類? – 2011-06-15 08:42:47

+0

我能夠發表我的表單字段到動作類中,並在數據庫中進行多次更新。但問題是如何以及在哪裏可以關閉打開的窗口,因爲表單提交後我不需要它。相反,窗口應該在表單提交後被自動鎖定 – Sam 2011-06-15 17:20:06

0

您可以從表單字段中讀取數據,並將它們作爲請求參數追加到URL中。這樣,參數應該在打開的窗口上可用。

相關問題