## iView表單驗證器問題
- 已填入字段值仍提示為空時,記得在data中添加該字段初始值
- 注意設置驗證數據類型`type`需與字段類型保持一致,詳見 [async-validator](https://github.com/yiminghe/async-validator) (iView基于該項目實現的數據驗證)。以下為`type`的可選值:
* `string`: 必須為`string`【默認值】
* `number`: 必須為`number`
* `boolean`: 必須為`boolean`
* `method`: 必須為`function`
* `regexp`: 必須滿足有效的正則表達式
* `integer`: 必須為`number`并且為整型
* `float`: 必須為`number`并且為浮點數
* `array`: 必須為數組`Array.isArray`
* `object`: 必須為`object`并且不是數組`Array.isArray`
* `enum`: 必須為`enum`枚舉類型
* `date`: 必須為`Date`日期類型
* `url`: 必須為`url`
* `hex`: 必須為`hex`十六進制
* `email`: 必須為`email`郵箱格式
* `any`: 可以為任意類型
## iView日期組件表單驗證+后端接收校驗【編輯日期字段】
- 后端統一轉化并接收指定時間格式字符串,因前端組件僅支持date類型,且減少前端時間轉化工作量,不建議使用時間戳格式存儲,注意時區的設定
``` java
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
// XBoot提供的自定義日期校驗注解
@DateValidator
private Date createTime;
```
- 前端提交數據前記得處理轉換時間格式,使用全局掛載的`date-fns`提供的時間轉換方法`format()`
- 表單驗證驗證需要為必填字段時,建議`type`填寫為`date`,避免類型轉換導致驗證不通過
> 示例
``` javascript
...
<!-- Template部分 -->
<Form ref="form" :model="form" :label-width="80" :rules="formValidate">
<FormItem label="日期" prop="date">
<DatePicker v-model="form.date" type="date"/>
</FormItem>
</Form>
...
// JS部分
formValidate: {
date: [{ required: true, type: "date", message: "不能為空", trigger: "blur" }]
}
...
methods: {
submit(v) {
if (typeof this.form.date == "object") {
this.form.date = this.format(this.form.date, "yyyy-MM-dd");
}
}
}
...
```
## iView日期范圍選擇組件表單非空驗證
- 驗證規則如下
```
日期字段名: [
{
type: "array",
required: true,
trigger: "change",
fields: {
0: { type: "date", message: "起始日期不能為空", required: true },
1: { type: "date", message: "結束日期不能為空", required: true }
},
},
]
```
## iView表單驗證失效
- 請檢查是否滿足以下條件:
1. FormItem中prop屬性是否匹配
2. 驗證規則中type是否與數據類型匹配(多修改嘗試)
3. Form字段初始值是否缺失或類型不匹配
## 前端Long類型精度丟失
> 例如:201911200001725439這樣一個Long類型數,傳給前端后會變成201911200001725440,超過了JavaScript的Number類型最大16位長度
- 字段上使用注解:`@JSONField(serializeUsing= ToStringSerializer.class)`
- 或更換為`java.lang.String`類型
- 前言&版本說明
- 概念
- XBoot 是什么?
- 系統架構
- 主要使用的開源組件
- 角色控制訪問權限(RBAC)
- 用戶手冊
- 系統配置
- 工作流使用配置
- 定時任務調度
- 智能助手客服機器人
- 項目本地運行
- 后端運行
- 前端運行
- 項目結構說明
- 附:使用Oracle等數據庫
- 模塊化版本
- 后端開發指南
- 基本開發指南
- 前后端數據交互標準
- 工具類及數據權限
- 代碼生成器-30秒搞定CRUD
- 增刪改查CRUD
- 日志類型注解擴展
- 邏輯刪除
- 各驗證碼使用及配置
- 接口文檔使用及認證
- 前端開發指南
- 基本開發指南
- 主題/Logo/首頁等配置
- 路由菜單配置
- 多語言國際化配置
- 自定義圖標icon
- 工具類及數據獲取
- 其他說明
- 完整版開發指南
- 前端Vue代碼生成器
- Activiti工作流
- 單點登錄配置
- 智能助手/客服機器人
- MinIO對象存儲服務搭建
- 第三方社交賬號配置
- 短信開發/站內消息/郵件
- Vaptcha驗證碼
- 禁用詞使用
- 前端移除CDN
- 其他說明
- 開放平臺及單點登錄
- 開放平臺使用指南
- Web接入開發流程
- 單點登錄開發指南
- 微信小程序端開發指南
- 項目導入與開發必讀
- 業務組件
- 產品組件(小)
- 產品組件(大)
- 優惠券組件
- 評論列表組件
- 紅包組件
- 推薦商品組件
- 頁面設計
- 商品詳情頁及SKU設計
- 通用方法工具類說明
- 開發經驗與踩坑分享
- Uniapp端開發指南
- APP后端開發指南
- Uniapp前端開發指南
- 開發新功能示例
- 后端開發新模塊
- 前端開發新頁面
- 測試
- SonarQube代碼質量管理
- TestNG單元測試
- ExtentReports測試報告
- Selenuim自動化Web測試
- Appuim自動化App測試
- JMeter壓測性能測試
- 部署
- Spring Boot配置
- 快速部署
- 后端部署
- 前端部署
- 前端部署優化
- Docker容器化部署
- 服務器配置
- 持續集成
- GitLab
- GitLab CI
- XBoot 腳本參考
- Jenkins
- Jenkins安裝
- XBoot CI參考
- DevOps環境搭建
- 組件安裝列表
- 開發設計規范
- 分支管理
- 數據庫設計規范
- Redis使用規范
- Java基礎開發規范
- Rest API規范
- 項目結構規范
- 前端開發規范
- 前端設計規范
- 項目搭建分享
- 后端相關
- SpringBoot 2.x區別總結
- Spring Security整合JWT
- Spring Security動態權限管理
- Spring Boot 2.x整合Quartz
- Spring Boot 2.x整合Websocket
- Spring Boot 2.x整合Activiti工作流以及模型設計器
- Spring Boot + Security全局跨域配置
- 前端相關
- axios請求封裝 統一異常處理
- 動態路由菜單加載
- 多維度控制權限至按鈕顯示
- 發送消息圖標紅點實時顯示
- 動態組件單頁操作
- XBoot助你【告別996】
- 業務開發踩坑
- 你會用開發神器IDEA嗎
- Lombok你知道多少
- 你還在手動校驗參數嗎
- 你真的會用JPA嗎
- Lamda表達式
- Stream流式API
- 告別資源關閉
- Optional避免null
- 谷歌Guava工具包
- 線程池
- 其他小經驗技巧
- 更新日志及步驟
- 常見問題