程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> JSP編程 >> 關於JSP >> jsp處理表單及JS和JAVA變量互傳

jsp處理表單及JS和JAVA變量互傳

編輯:關於JSP

1:超連接跳轉

 

      我們在超連接的時候,常常連接到一個jsp或者Action,比如:

 

XXX

 

      這樣做會有一個問題:在test.jsp中,除你傳遞的param1和param2參數外,你用request.getParamter()取任何原來頁面的表單元素都會為空,這是因為這種方式會產生新的request生命周期,在這個request中只會包含超連接後跟隨的?param1這種參數, 因此我的建議是如果不是很簡單的頁面跳轉(比如回登陸頁面之類的),盡量不要用這種超連接方式。

 

 

 

2:既傳參又提交表單

 

      如果確實既要像上述第一種方式傳參數,又要提交表單的話,可以采取如下方式:

 

在腳本中如下處理:

 

functioncommonSubmit(url)

 

{

 

   form1.action="/jsp/managerAction.do?"+url;

 

    form1.submit();

 

}

 

提交到Action和jsp是一樣的原理,但要記住中method=post不能少,否則它只提交表單而不傳param參數了(正好和第一種相反:) )

 

 

 

3:Action中request不會丟掉

 

      不知大家有沒有注意到這個好處,Struts架構中是由一個ActionServlet來作為MVC的控制器角色,jsp頁面提交後request是傳到ActionServelt中的, 而ActionServlet將根據struts-config.xml中的配置調用相應的Action的方法,並將從jsp中獲得的request傳給Action類,這樣request的生命周期是連續的,即你在jsp中提交了表單,在Action中執行了方法,再回到jsp頁面,用 request.getParamter()取jsp頁面的表單元素值會發現它還在,這對於頁面下拉列表等選擇項防止復位是一個很好實現方法。

 

 

 

4:傳參時參數有空格的情況

 

       如果你提交form時帶參數,比如form1.action="/jsp/Action.do?param1="+value1,注意如果value1中帶有空格的話,你在

 

 

 

Action中request.getParameter("param1");

 

 

 

取得的只是空格前的值,因此如果有這種帶空格的參數在傳遞時,個人建議是將其轉化為特定的字符串,value1=value1.replaceAll(" ","%NULL%");

 

然後在Action中將其轉回來:request.getParamter("param1").replaceAll("%NULL%","");

 

 

 

5:form-data屬性

 

      如果你要用來上傳文件的話,注意在一個表單中如果有enctype="multipart/form-data"屬性的話,是不能接收除type=file外的其他表單元素類型的。

 

即如果你把textfield放在同一表單中,而該表單有enctype="multipart/form-data"的話,request.getParamter取text的值會為空, 這個問題的最簡單的解決方法是將單獨放一個表單,上傳文件時只提交該表單即可。

 

 

 

6:jsp中開模式對話框的方式

 

      將一個jsp頁面放到一個模式對話框中打開,這樣在模式對話框消失前,原jsp頁面將不可操作。特別適合父頁面中要做一些額外的選擇操作,而又沒必要跳轉到新的jsp頁面的時候,開模式對話框的方式參考如下:

 

 

 

Functionopen() {

 

If(window.showModelDialog())

 

{

 

      Var returnValue = showModelDialog(“/jsp/模式窗口包含的jsp頁面路徑”;

 

               help=0;status=0;center=yes;dialogWidth=100pt;dialogHeight=100pt”);

 

   }

 

 

 

}

 

 

 

7:js和java變量互傳

 

      在jsp中經常會遇到把js變量賦給java變量,或者將java變量賦給js變量的情況,在此將通用的處理方法小結如下:

 

 

 

java變量傳給js好辦,var a="<%=javaParam%>";注意要將引號""加上;

 

 

 

js變量給java稍微復雜點,一般是在表單中用一個

 

的隱藏表單元素,然後在腳本中將js變量值賦給它:

 

 

 

var jsParamValue='aaaa';

 

form1.jsParam.value=jsParamValue;

 

 

 

然後就可以request.getPrameter("jsPrama");來取得js變量值了

 

 

 

補充:ajax其實就是實時的,在頁面不刷新的情況下,將JS變量傳到服務器的技術

 

 

 

總結:

 

不能拿JS變量在頁面上給java變量賦值;

 

相反可以用var jsParam = "<%=javaParam%>" 將java變量賦值給js變量

 

摘自 angus_17

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved