1. 程式人生 > >在Struts2使用集合物件儲存表單提交引數

在Struts2使用集合物件儲存表單提交引數

先上圖,有這樣的業務場景,一次表單提交需要批量新增n本書籍的資訊


我們來看下如何用Struts2的特性來一步搞定它!

1.建立model類Book

[java] view plaincopyprint?
  1. package com.crazycoder2010.struts2.bean;  
  2. publicclass Book {  
  3.     private String name;  
  4.     privateint price;  
  5.     public String getName() {  
  6.         return name;  
  7.     }  
  8.     public
    void setName(String name) {  
  9.         this.name = name;  
  10.     }  
  11.     publicint getPrice() {  
  12.         return price;  
  13.     }  
  14.     publicvoid setPrice(int price) {  
  15.         this.price = price;  
  16.     }  
  17. }  
2.編寫業務處理Action類AddBookAction [java] view plaincopyprint?
  1. package com.crazycoder2010.struts2.action;  
  2. import java.util.ArrayList;  
  3. import java.util.List;  
  4. import com.crazycoder2010.struts2.bean.Book;  
  5. import com.opensymphony.xwork2.ActionSupport;  
  6. publicclass AddBookAction extends ActionSupport {  
  7.     privatestaticfinallong serialVersionUID = 8136233165580827673L;  
  8.     private List<Book> books = 
    new ArrayList<Book>();  
  9.     public List<Book> getBooks() {  
  10.         return books;  
  11.     }  
  12.     publicvoid setBooks(List<Book> books) {  
  13.         this.books = books;  
  14.     }  
  15.     @Override
  16.     public String execute() throws Exception {  
  17.         for(Book book : books){  
  18.             System.out.println(book.getName()+":"+book.getPrice());  
  19.         }  
  20.         return SUCCESS;  
  21.     }  
  22. }  
3.編寫頁面add_book.jsp [html] view plaincopyprint?
  1. <%@ taglib prefix="s"uri="/struts-tags"%>
  2. <html>
  3.   <head>
  4.   </head>
  5.   <body>
  6.     <s:formaction="addBook"method="post">
  7.         <s:iteratorvalue="new int[3]"var="book"status="status">
  8.             <label>Name:</label>
  9.             <s:textfieldname="%{'books['+#status.index+'].name'}"theme="simple"></s:textfield>
  10.             <label>Price:</label>
  11.             <s:textfieldname="%{'books['+#status.index+'].price'}"theme="simple"></s:textfield>
  12.             <br/>
  13.         </s:iterator>
  14.         <s:submitvalue="Add"></s:submit>
  15.     </s:form>
  16.   </body>
  17. </html>
這個表單中我們模擬建立3個book資訊,每個book有name和price屬性,這裡需要特別注意的是表單元素的命名需要和我們AddBookAction中的List<Book> books 保持一直,名字分別為books[0].name,books[0].price;books[1].name,books[1].price,依次類推

4.在AddBookAction類同目錄下建立一個AddBookAction-conversion.properties檔案,內容如下

[html] view plaincopyprint?
  1. Element_books=com.crazycoder2010.struts2.bean.Book  
其中Element_作為字首books就是這個AddBookAction中用來接受list引數的引數名

5.Run it!


結果展示出我們的action已經可以接受頁面提交過來的批量表單引數,這是struts2的一個非常有用的功能

相關推薦

Struts2使用集合物件儲存提交引數

先上圖,有這樣的業務場景,一次表單提交需要批量新增n本書籍的資訊 我們來看下如何用Struts2的特性來一步搞定它! 1.建立model類Book [java] view plaincopyprint? package com.crazycode

Request物件接收請求引數的中文亂碼處理

在開發中,很多人會遇到使用Request物件接收表單請求引數會遇到中文亂碼,至於怎麼處理呢?只需要瞭解其產生亂碼的原因,處理起來還是很容易的,接下來用程式碼演示: * Request接收中文資料 */ public class RequestDemo3 ext

servlet亂碼及接收提交引數

servlet輸出中文(輸出到頁面的中文亂碼)(1)亂碼產生的原因 out.println方法預設情況下會使用“iso-8859-1” response.setContentType("text/html;charset=utf-8");注:作用1:out.println

Form提交引數型別與後臺實體引數型別的問題

在SpringMVC+Hibernate+Spring的框架下,Jsp頁面的Form表單提交資料 1.肯定是以 key=val  的形式進行提交到後臺 2.提交的key的型別是根據你的在Jsp頁面標籤的型別而定的 a.如果是用的 JSP:Form 表單的程式碼 <in

spring mvc 繫結兩個物件進行提交

//form表單是可以提交多個物件的/** * 儲存簡歷 * @param bean 簡歷資訊 * @param jobIntention 求職意向 * @return */ @Logined @RequestMapping(value = "/jo

微信開發中form提交引數為空

今天在做微信公眾號開發時,發現有一個form表單的資料傳到後臺總是空,使用pc端的chrome除錯卻可以將引數傳到後臺,最後懷疑是微信瀏覽器的問題。上網找答案,果然大家都在吐槽這個坑。出現問題的程式碼片

SpringMVC form提交list物件集合

form表單頁面 <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %&

Jquery 將序列化為Json物件.同時提交多個引數

首先對某一表單進行Json物件序列化:  [javascript] view plain copy (function($){           $.fn.serializeJson=function(){               var se

struts2 提交後,返回原頁面,儲存radio 等標籤的值

在表單提交後,或者驗證失敗後,返回原有頁面時,如何將使用者原來在表單中填寫資料儲存下來呢? 經過研究後,發現有兩種簡便的方法可以解決: 1. 在不使用struts2標籤的情況下,我們用普通的表單元素 。(以radio為例)    方法:我們將struts2 的控制標籤巢狀

HttpClient Post 以提交方式請求 帶引數

/* * **HttpClient Post 以表單提交方式請求 帶引數** */ @Test public void fun5() throws ClientProtocolException, IOException{ //1、建立HttpClient org.apa

struts2 vallidate驗證提交修改樣式——刪除li標籤原點、取消換行、改變字型顏色

老師佈置實現的一個小效果,不容小覷! 預定成功顯示頁面  預定報錯顯示頁面  從圖片可以看出需要實現報錯提示換行以及字型顏色更改的需求。 網上有很多方法,這裡介紹兩種親測可用的吧: 修改struts2-core-x.x.x.jar

struts2 提交時的亂碼問題處理

如果表單提交的是post方式  : 在struts2 的核心檔案struts.xml中 加入如下配置   <struts>   <constant name="struts.i18n.encoding" value="UTF-8" /&g

easyUI form提交引數處理

$("#from_xxxxx_Dialog_xxxid").form('submit', { url: 'DeXX/SaveXXXXUploadXXX.action', onSubmit: function (param) {

struts2-註解&防止重複提交

註解: 註解沒有分號 註解首字母是大寫,因為註解與類、介面是同一級的。一個註解後臺對應一個@interface類 同一語法單元,同一註解只能使用一次 在註解與語法單元間可以隔若干空行、註釋等非程式碼內容 在struts2中使用註解,主要完成對Act

location.search 提交的內容處理為物件

<!DOCTYPE HTML> <html> <head> <title>事件處理</title> <meta charset="utf-8" /> </head> <body> <a h

提交資料庫儲存亂碼問題

從瀏覽器端表單編輯資料–>瀏覽器和程式建立連線傳輸資料–>程式controller層接收–>資料層編譯SQL–>寫入資料庫–>程式從資料庫讀取–>返回瀏覽器端–>

Spring MVC框架在進行提交,自動封裝成物件提交,在以物件的形式入參

最近做了一個超市訂單管理系統的專案,使用的是Spring MVC 和Spring 框架。 如上圖:進行新使用者新增。此處jsp頁面程式碼如下: <div class="right"> <div class="location"

form提交時,action怎麼傳一個或多個引數

<form action="RollBackFormData_updateLook_success_supervision?id=${listy.teacherid }" method="pos

html中的button按鈕呼叫js函式和提交傳遞引數

1.button的type設定為button 而不用submit,並新增onclick方法呼叫js函式 <input type="button" name="confirmAlter" value="確認修改" onclick="changeInfo(form1.co

解決HttpClient工具中application/x-www-form-urlencoded提交時,請求引數中文亂碼問題

一、引數亂碼現象 當我去請求第三方介面時,介面接收格式為Form表單的時候,使用HttpClient工具類。這時,對於封裝進HttpPost物件裡的請求引數,如果有中文引數,會出現亂碼的現象。 二、程式碼現象復現 controller層 @RestContr