webwork中使用動態Form欄位

來源:互聯網
上載者:User
web|動態

  一般情況下,webwork使用欄位驅動或者模型驅動方式擷取表單中的資料.(普通表單)
但是有的情況下,需要編輯的欄位名稱內容都是動態變化的,此時就沒法使用確定的類來做映射.
 
  此時我想到有以下幾種方法解決:
 
  1.使用webwork的內部對象,取出所有參數
 
      ActionContext context = ActionContext.getContext();
      Map params = context.getParameters();
     
      操作params就可以擷取所有參數

  2.使用Map映射
 
  Map有get,put函數,例如get("name"),put("name","scud")
  經過實驗(文檔中沒有對此的說明,webwork的文檔目前還很少,也可能是我沒閱讀到)
 
  在表單中映射採用這樣的方式:
   <input name="fields.name">
 
 讀取值則採用fields['name']的方式,這個文檔中提到了
 
 具體的檔案如下:

 
 A:輸入頁面
 
  <%@ taglib uri="webwork" prefix="ww" %>
  <html>
  <head>
  <title>WebWork Test 2</title>
  </head>
  <body>
  <p>What's your name?</p>
  <form action="hello.action" method="post">
  <p>
      <input type="text" name="field.person" /><br>
      <input type="submit" />
  </p>
  </form>
  </body>
  </html>
 

 B:success轉向的頁面

 
  <%@ taglib uri="webwork" prefix="ww" %>
  <html>
  <head>
  <title>WebWork Test 2</title>
  </head>
  <body> 
  Hello, <ww:property value="field['person']" /><br> 
  </body>
  </html>
 

 C:用到的Action類
 
 
  package helloWorld;
 
  import com.opensymphony.xwork.*;
  import java.util.*;
 
  public class HelloAction extends ActionSupport
  {
      private Map field = new HashMap();
 
      public String execute() throws Exception
      {
          return SUCCESS;
      }
 
      public void setField(Map field)
      {
          this.field = field;
      }
 
      public Map getField()
      {
          return field;
      } 
  }
 
 

  D:xwork.xml裡面的部分配置
  
     <action name="hello" class="helloWorld.HelloAction">
         <result name="error" type="dispatcher">ex02-index.jsp</result>
         <result name="success" type="dispatcher">ex02-success.jsp</result>
     </action>  
 
 
 
  3.使用使用者自訂類來實現
 
   這種方式不多討論,使用者的類可能需要實現getXXX(String sKey)類似的函數.
 
 
 
  總結:
 
   當然應該還有其他方法實現,而且可能更好,不過我剛看webwork沒有幾天,對我關心的問題提出了上面的方法,肯定是比較簡單的想法.
 
   如果那位有其他方法,請不吝指教.



相關文章

Beyond APAC's No.1 Cloud

19.6% IaaS Market Share in Asia Pacific - Gartner IT Service report, 2018

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。