熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> JSP教程 >> 正文

Turbine Howto 之 Action Event [譯]

2013-11-15 11:38:05  來源: JSP教程 

  Turbine 有一個非常好的功能來幫助開發人員處理web耶面的提交數據為了理解這一功能你需要知道Turbine是如何處理一次提交的
  事實上當在一個URI中只要發現有action這個變量出現在執行所有Screen類之前會執行一個程序我們來看下面這個例子(來自VelocitySite的Howto示例):
  
  對於URLrTurbine 會首先執行一個名叫NewUse的Action類在這種情況下所有繼承ActionEvent而不是Action的類都可以象如下的代碼一樣方便的處理:
  
  public class NewUser extends VelocityAction
  {
  public void doAdd (RunData data Context context) throws Exception
  {
  // put code here to add the user to the system
  contextput (username username );
  datasetMessage(User Added!);
  }
  
  public void doPerform(RunData data Context context) throws Exception
  {
  datasetMessage(Button not found!);
  }
  }
  
  然後在HTML中這樣寫:
  
  <input type=submit name=eventSubmit_doAdd value=Add User>
  
  當Action執行的時候將會收到一個事件來執行Action類中的doAdd()方法這樣處理最的就是你的每一種action(操作注:比如點擊一個提交按鈕等)都可以對應到Action類中一個特定的方法
  
  這個新的功能並不意味著你應該把所有的操作都寫到一個類裡而是假設有一個頁面裡面有一些和這個頁面關西很緊密的操作這時最好是把這些操作都寫到同一個類裡這樣可以幫助你方便的判斷並處理具體哪個按鈕給點擊了而不是用一些ifelse
  
  如果判斷不出哪個按鈕被點擊了(找不到一個合適的方法執行)將會執行doPerform()方法
  
  因為ParameterParser把所有的key都變成了小寫我們必須將提交的數據裡得到一個合適的方法名比如:一個按鈕名叫 eventSubmit_doDelete提交的時候就變成了eventsubmit_dodelete因此我們需要通過一些命名規范來得到真正的方法名轉換的規則是:
  * 變量名(如:提交按鈕)必需以eventSubmit_開頭
  * 變量名在這個前綴後必需是do
  * 在do之後的第一個字母必須是大寫並且其他都是小寫
  只要你遵循這些命名規范在Action類中就能找到相應的方法來執行
  
  (注:以上規則適合turbine及以前的版本在turbine及以後的版本中 eventSubmit_doMySaveMethod也是一個合法的名子因為在以後的版本裡Parameterparser不會把key 都變成小寫這一點在取得提交數據的時候也要注意的)
  
  在TurbineResourcesproperties裡有一個屬性名叫actioneventsubmitneedsvalue 如果把這個屬性設置成true那只有值不為空並且不為的事件才會被執行這在一個FORM有多個不同的事件(或者說提交按鈕)並且由客戶端的代碼(比如javascript)提交的時候比較有用
From:http://tw.wingwit.com/Article/program/Java/JSP/201311/19337.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.