|
@@ -98,18 +98,54 @@ func mapForm(ptr interface{}, form map[string][]string) error {
|
|
|
return nil
|
|
return nil
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+func setIntField(val string, bitSize int, structField reflect.Value) error {
|
|
|
|
|
+ if val == "" {
|
|
|
|
|
+ val = "0"
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ intVal, err := strconv.ParseInt(val, 10, bitSize)
|
|
|
|
|
+ if err == nil {
|
|
|
|
|
+ structField.SetInt(intVal)
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return err
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+func setUintField(val string, bitSize int, structField reflect.Value) error {
|
|
|
|
|
+ if val == "" {
|
|
|
|
|
+ val = "0"
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ uintVal, err := strconv.ParseUint(val, 10, bitSize)
|
|
|
|
|
+ if err == nil {
|
|
|
|
|
+ structField.SetUint(uintVal)
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return err
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
func setWithProperType(valueKind reflect.Kind, val string, structField reflect.Value) error {
|
|
func setWithProperType(valueKind reflect.Kind, val string, structField reflect.Value) error {
|
|
|
switch valueKind {
|
|
switch valueKind {
|
|
|
- case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
|
|
|
|
|
- if val == "" {
|
|
|
|
|
- val = "0"
|
|
|
|
|
- }
|
|
|
|
|
- intVal, err := strconv.Atoi(val)
|
|
|
|
|
- if err != nil {
|
|
|
|
|
- return err
|
|
|
|
|
- } else {
|
|
|
|
|
- structField.SetInt(int64(intVal))
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ case reflect.Int:
|
|
|
|
|
+ return setIntField(val, 0, structField)
|
|
|
|
|
+ case reflect.Int8:
|
|
|
|
|
+ return setIntField(val, 8, structField)
|
|
|
|
|
+ case reflect.Int16:
|
|
|
|
|
+ return setIntField(val, 16, structField)
|
|
|
|
|
+ case reflect.Int32:
|
|
|
|
|
+ return setIntField(val, 32, structField)
|
|
|
|
|
+ case reflect.Int64:
|
|
|
|
|
+ return setIntField(val, 64, structField)
|
|
|
|
|
+ case reflect.Uint:
|
|
|
|
|
+ return setUintField(val, 0, structField)
|
|
|
|
|
+ case reflect.Uint8:
|
|
|
|
|
+ return setUintField(val, 8, structField)
|
|
|
|
|
+ case reflect.Uint16:
|
|
|
|
|
+ return setUintField(val, 16, structField)
|
|
|
|
|
+ case reflect.Uint32:
|
|
|
|
|
+ return setUintField(val, 32, structField)
|
|
|
|
|
+ case reflect.Uint64:
|
|
|
|
|
+ return setUintField(val, 64, structField)
|
|
|
case reflect.Bool:
|
|
case reflect.Bool:
|
|
|
if val == "" {
|
|
if val == "" {
|
|
|
val = "false"
|
|
val = "false"
|