GWT的view中不能用java原生的DateFormat 必須使用gwt封裝的格式化方法,方法如下
import com.google.gwt.i18n.client.DateTimeFormat;
Date date=new Date();
DateTimeFormat sdf = DateTimeFormat.getFormat("yyyy-MM-dd");
DateTimeFormat sdf2 = DateTimeFormat.getFormat("yyyy-MM");
String sStr=sdf2.format(date)+"-01";
String eStr= sdf.format(date);
String[] s = {sStr,eStr};
dateRangeField.setValue(s);
參考源碼:
1 package com.iloosen.imall.client.platform.module.stats.view; 2 3 4 import java.util.ArrayList; 5 import java.util.Date; 6 import java.util.List; 7 8 import org.apache.commons.lang.StringUtils; 9 10 import com.extjs.gxt.ui.client.data.BaseModelData; 11 import com.extjs.gxt.ui.client.data.BasePagingLoader; 12 import com.extjs.gxt.ui.client.data.BaseTreeModel; 13 import com.extjs.gxt.ui.client.data.DataField; 14 import com.extjs.gxt.ui.client.data.HttpProxy; 15 import com.extjs.gxt.ui.client.data.LoadConfig; 16 import com.extjs.gxt.ui.client.data.LoadEvent; 17 import com.extjs.gxt.ui.client.data.ModelData; 18 import com.extjs.gxt.ui.client.data.ModelType; 19 import com.extjs.gxt.ui.client.data.PagingLoadResult; 20 import com.extjs.gxt.ui.client.event.BaseEvent; 21 import com.extjs.gxt.ui.client.event.ComponentEvent; 22 import com.extjs.gxt.ui.client.event.Events; 23 import com.extjs.gxt.ui.client.event.Listener; 24 import com.extjs.gxt.ui.client.event.LoadListener; 25 import com.extjs.gxt.ui.client.store.ListStore; 26 import com.extjs.gxt.ui.client.widget.Label; 27 import com.extjs.gxt.ui.client.widget.MessageBox; 28 import com.extjs.gxt.ui.client.widget.form.TextField; 29 import com.extjs.gxt.ui.client.widget.grid.ColumnConfig; 30 import com.extjs.gxt.ui.client.widget.grid.ColumnModel; 31 import com.extjs.gxt.ui.client.widget.grid.Grid; 32 import com.extjs.gxt.ui.client.widget.layout.MarginData; 33 import com.extjs.gxt.ui.client.widget.toolbar.FillToolItem; 34 import com.extjs.gxt.ui.client.widget.toolbar.PagingToolBar; 35 import com.google.gwt.core.client.GWT; 36 import com.google.gwt.http.client.RequestBuilder; 37 import com.google.gwt.i18n.client.DateTimeFormat; 38 import com.iloosen.imall.client.commons.WidgetCreateUtil; 39 import com.iloosen.imall.client.components.BaseButton; 40 import com.iloosen.imall.client.components.BaseContentPanel; 41 import com.iloosen.imall.client.components.ColumnConfigExt; 42 import com.iloosen.imall.client.components.IMallRequestBuilder; 43 import com.iloosen.imall.client.components.PagingToolBarExt; 44 import com.iloosen.imall.client.components.data.JsonPagingLoadResultReaderExt; 45 import com.iloosen.imall.client.components.event.CellClickEvent; 46 import com.iloosen.imall.client.components.selector.DateRangeField; 47 import com.iloosen.imall.client.constant.yljkc.IYljkcCoinLog; 48 import com.iloosen.imall.client.platform.module.stats.presenter.StatsExchangeCoinPresenter; 49 /** 50 * 51 * @ClassName: CouponManagerView 52 * @Description: 購物券管理批次管理View 53 * @author ly 54 * @date 2015年10月22日 上午9:24:02 55 * 56 */ 57 public class StatsExchangeCoinView extends BaseContentPanel implements StatsExchangeCoinPresenter.Display{ 58 59 private static final String KEY = "key"; 60 protected BasePagingLoader loader; 61 protected Label countLabel; 62 private BaseButton btnSearch; 63 protected Grid<ModelData> listGrid; 64 private TextField<String> txtSearch; 65 private BaseButton btnOutput; 66 private DateRangeField dateRangeField ;//時間段 67 68 public StatsExchangeCoinView() { 69 super(false, false); 70 setBodyBorder(false); 71 setBorders(false); 72 initToolBar(); 73 initGrid(); 74 } 75 76 /** 77 * 初始化 toolBar 的按鈕 78 */ 79 private void initToolBar() { 80 btnSearch = new BaseButton("搜 索", "find"); 81 btnOutput = new BaseButton("導出", "excel"); 82 dateRangeField = WidgetCreateUtil.createDateRangeField("start", "end", "選擇日期"); 83 Date date=new Date(); 84 DateTimeFormat sdf = DateTimeFormat.getFormat("yyyy-MM-dd"); 85 DateTimeFormat sdf2 = DateTimeFormat.getFormat("yyyy-MM"); 86 String sStr=sdf2.format(date)+"-01"; 87 String eStr= sdf.format(date); 88 String[] s = {sStr,eStr}; 89 dateRangeField.setValue(s); 90 91 txtSearch = new TextField<String>(); 92 txtSearch.setName("searchField"); 93 txtSearch.setAutoWidth(true); 94 txtSearch.setAutoHeight(true); 95 txtSearch.setTitle("登錄名或用戶名"); 96 txtSearch.setEmptyText("登錄名或用戶名"); 97 //添加工具 98 getToolBar().setLayoutData(new MarginData(10, 10, 10, 10)); 99 getToolBar().setHeader("59豆兌換消費統計"); 100 getToolBar().add(dateRangeField); 101 getToolBar().add(btnOutput); 102 getToolBar().add(new FillToolItem()); 103 getToolBar().add(txtSearch); 104 getToolBar().add(btnSearch); 105 } 106 107 /** 108 * 初始化 grid 109 */ 110 protected void initGrid() { 111 String url = GWT.getHostPageBaseURL() + "/admin/modules/yljkc/yljkcCoin/findPage.json"; 112 RequestBuilder builder = new IMallRequestBuilder(RequestBuilder.GET, url); 113 builder.setHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"); 114 HttpProxy<String> proxy = new HttpProxy<String>(builder); 115 116 ModelType type = new ModelType(); 117 type.setTotalName("total"); 118 type.setRoot("result"); 119 /**用戶ID*/ 120 // DataField sysUserIdField = new DataField(IYljkcCoinLog.SYS_USER_ID, IYljkcCoinLog.SYS_USER_ID); 121 // DataField sysUserIdField = new DataField("loginId", "loginId"); 122 // sysUserIdField.setType(Integer.class); 123 //type.addField(sysUserIdField); 124 type.addField("loginId"); 125 type.addField(IYljkcCoinLog.SYS_USER_NAME); 126 type.addField(IYljkcCoinLog.USER_MOBILE); 127 type.addField(IYljkcCoinLog.TRANSACTION_START_AMOUNT); 128 type.addField(IYljkcCoinLog.TRANSACTION_END_AMOUNT); 129 type.addField(IYljkcCoinLog.TRANS_IN_AMOUNT); 130 type.addField(IYljkcCoinLog.PAY_FAIL_IN_AMOUNT); 131 type.addField(IYljkcCoinLog.OTHER_IN_AMOUNT); 132 type.addField(IYljkcCoinLog.DEDUCT_OUT_AMOUNT); 133 type.addField(IYljkcCoinLog.PAY_OUT_AMOUNT); 134 type.addField(IYljkcCoinLog.TO_MONEY); 135 type.addField(IYljkcCoinLog.START_TIME_STR); 136 type.addField(IYljkcCoinLog.END_TIME_STR); 137 138 JsonPagingLoadResultReaderExt<PagingLoadResult<ModelData>> reader = new JsonPagingLoadResultReaderExt<PagingLoadResult<ModelData>>(type); 139 loader = new BasePagingLoader<PagingLoadResult<ModelData>>(proxy, reader); 140 loader.setRemoteSort(true); 141 loader.addLoadListener(new LoadListener() { 142 public void loaderBeforeLoad(LoadEvent le) { 143 LoadConfig config = le.getConfig(); 144 parameters(config); 145 } 146 }); 147 int pageSize = 25; 148 149 150 ListStore<ModelData> listStore = new ListStore<ModelData>(loader); 151 PagingToolBar pagingToolBar = new PagingToolBarExt(pageSize); 152 pagingToolBar.bind(loader); 153 154 countLabel = new Label(); 155 pagingToolBar.insert(countLabel, 13); 156 /** 157 * ColumnConfig 158 * 設置顯示頁面的表頭 159 */ 160 List<ColumnConfig> configs = new ArrayList<ColumnConfig>(); 161 162 //ColumnConfig sysUserIdConfig =new ColumnConfigExt(IYljkcCoinLog.SYS_USER_ID, "用戶id", 90); 163 ColumnConfig sysUserIdConfig =new ColumnConfigExt("loginId", "登錄名", 90); 164 configs.add(sysUserIdConfig); 165 166 ColumnConfig sysUserNameConfig = new ColumnConfigExt(IYljkcCoinLog.SYS_USER_NAME, "用戶名", 150); 167 configs.add(sysUserNameConfig); 168 169 ColumnConfig userMobileConfig = new ColumnConfigExt(IYljkcCoinLog.USER_MOBILE, "手機號", 100); 170 configs.add(userMobileConfig); 171 172 ColumnConfig transactionStartAmountConfig = new ColumnConfigExt(IYljkcCoinLog.TRANSACTION_START_AMOUNT, "期初余額", 100); 173 configs.add(transactionStartAmountConfig); 174 ColumnConfig transactionEndAmountConfig = new ColumnConfigExt(IYljkcCoinLog.TRANSACTION_END_AMOUNT, "期末余額", 100); 175 configs.add(transactionEndAmountConfig); 176 177 ColumnConfig transInAmountConfig = new ColumnConfigExt(IYljkcCoinLog.TRANS_IN_AMOUNT, "59豆兌換入賬", 100); 178 configs.add(transInAmountConfig); 179 ColumnConfig payFailInAmountConfig = new ColumnConfigExt(IYljkcCoinLog.PAY_FAIL_IN_AMOUNT, "支付失敗入賬", 100); 180 configs.add(payFailInAmountConfig); 181 ColumnConfig otherInAmountConfig = new ColumnConfigExt(IYljkcCoinLog.OTHER_IN_AMOUNT, "其他入賬", 100); 182 configs.add(otherInAmountConfig); 183 ColumnConfig deductOutAmount = new ColumnConfigExt(IYljkcCoinLog.DEDUCT_OUT_AMOUNT, "批量扣減出賬", 100); 184 configs.add(deductOutAmount); 185 ColumnConfig payOutAmount = new ColumnConfigExt(IYljkcCoinLog.PAY_OUT_AMOUNT, "健康幣支付出賬", 100); 186 configs.add(payOutAmount); 187 ColumnConfig toMoney = new ColumnConfigExt(IYljkcCoinLog.TO_MONEY, "健康幣抵扣金額", 100); 188 configs.add(toMoney); 189 190 ColumnConfig couponStartTimeConfig = new ColumnConfigExt(IYljkcCoinLog.START_TIME_STR, "開始日期", 100); 191 configs.add(couponStartTimeConfig); 192 193 ColumnConfig couponEndTimeConfig = new ColumnConfigExt(IYljkcCoinLog.END_TIME_STR, "結束日期", 100); 194 configs.add(couponEndTimeConfig); 195 ColumnModel cm = new ColumnModel(configs); 196 197 listGrid = new Grid<ModelData>(listStore, cm); 198 listGrid.setStripeRows(true); 199 listGrid.disableTextSelection(false); 200 listGrid.setLoadMask(true); 201 202 this.getMainPanel().getAriaSupport().setLabelledBy(this.getMainPanel().getId()); 203 this.getMainPanel().add(listGrid); 204 this.getMainPanel().setBottomComponent(pagingToolBar); 205 } 206 207 protected void parameters(LoadConfig config) { //NOSONAR 208 if (txtSearch.getValue() != null) { 209 config.set(txtSearch.getName(), txtSearch.getValue()); 210 } 211 if (dateRangeField.getValue() != null && !dateRangeField.getStartTimeString().equals("") && !dateRangeField.getEndTimeString().equals("")) { 212 config.set("startDate", dateRangeField.getStartTimeString()); 213 config.set("endDate", dateRangeField.getEndTimeString()); 214 } 215 } 216 217 @Override 218 public void setClickGridCellHandler(Listener<CellClickEvent> listener) { 219 listGrid.addListener(CellClickEvent.TYPE,listener); 220 } 221 222 @Override 223 public Grid<ModelData> getListGrid() { 224 return listGrid; 225 } 226 227 @Override 228 public void reLoadGrid() { 229 // RestUtil.sendRestRequest("/admin/modules/yljkc/yljkcCoin/findPage.json", getSearchModel(), RestUtil.REST_GET, new BaseCallBack() { 230 // @Override 231 // protected void onSuccess(Request request, Response response) { 232 // String text = response.getText(); 233 // JSONObject json = (JSONObject) JSONParser.parseStrict(text); 234 // JSONObject result = (JSONObject) json.get("result"); 235 // ModelData md = ModelUtil.json2ModelData(result, new ModelUtil.ModelCreator() { 236 // public ModelData create() { 237 // return new BaseTreeModel(); 238 // } 239 // }); 240 // //countLabel.setText(getCouponBatchCountInfo(md)); 241 // } 242 // }); 243 listGrid.getStore().getLoader().load(); 244 } 245 // /** 246 // * 獲取購物券的統計信息 247 // * @param m 248 // * @return 249 // */ 250 // public String getCouponBatchCountInfo(ModelData m){ 251 // return "<Font style='font-size: 13px;padding:5px 10px;'>" + 252 // "共生成 " + (m != null ?((Double) m.get("couponCount")).intValue() : 0) + " 張" + 253 // " 總金額¥:<Font style='font-weight:bold'>" + (m != null ?((Double) m.get("totalAmount")).intValue() : 0) + 254 // "</Font> 充值總金額¥:<Font style='color:green'>" + (m != null ? ((Double)m.get("bindAmount")).intValue() : 0) + 255 // "</Font> 剩余總金額¥:<Font style='color:red'>" + (m != null ? ((Double)m.get("unbindAmount")).intValue() : 0) + "</Font></Font>"; 256 // } 257 /** 258 * 添加搜索條件 259 * @return 260 */ 261 262 private BaseModelData getSearchModel() {//NOSONAR 263 BaseModelData searchModel = new BaseModelData(); 264 if (txtSearch.isEnabled()) { 265 if (txtSearch.getValue() != null) { 266 searchModel.set(txtSearch.getName(), txtSearch.getValue()); 267 } 268 if (dateRangeField.getValue() != null && !dateRangeField.getStartTimeString().equals("") && !dateRangeField.getEndTimeString().equals("")) { 269 searchModel.set("startDate", dateRangeField.getStartTimeString()); 270 searchModel.set("endDate", dateRangeField.getEndTimeString()); 271 } 272 } 273 return searchModel; 274 } 275 @Override 276 public void addSearchListener(Listener<? extends ComponentEvent> listener) { 277 btnSearch.addListener(Events.OnClick, listener); 278 } 279 280 @Override 281 public void addOutputListener(Listener<BaseEvent> listener) { 282 btnOutput.addListener(Events.OnClick, listener); 283 } 284 285 @Override 286 public List<Object> getTime() { 287 List<Object> time = new ArrayList<Object>(); 288 if(dateRangeField.getValue() != null && !dateRangeField.getStartTimeString().equals("") && !dateRangeField.getEndTimeString().equals("")){ 289 time.add(dateRangeField.getStartTimeString()); 290 time.add( dateRangeField.getEndTimeString()); 291 if(txtSearch.getValue()!=null){ 292 time.add(txtSearch.getValue()); 293 } 294 return time; 295 } 296 MessageBox.alert("系統信息", "請選擇日期項再確定操作!", null); 297 return null; 298 } 299 300 }View Code