zoukankan      html  css  js  c++  java
  • 06_类型转换

    1.类型转换概述
    • 从一个HTML表单到一个Action对象,类型转换是从字符串到非字符串
    • 在struts2中,由Parameters拦截器自动完成字符串和基本数据类型之间的转换
    2.类型转换出错处理
    • 如果类型转换出错:
      • 未实现validationAware接口:struts在遇到类型转换错误时仍会调用action,仿佛什么都没有发生
      • 实现了validationAware接口:struts将检查相关元素的声明是否包含着一个name=input的result,如果有则将控制器交给该result元素,若没有则抛出一个异常
        • 疑问;
          • 如何覆盖默认的消息提示:
          • 如果主题是simple,会不会自动显示错误消息,不会又需要怎么办:
        • 类型转换错误消息定制:
          • ConversionError拦截器负责添加与类型转换有关的出错消息(前提是Action类必须实现了validationAware接口)和保存各请求参数的原始值
          • 若字段标签使用的不是simple主题,则非法输入字段将导致一条有着以下格式的出错消息:                                Invalid field value for field "filedName".
          • 覆盖默认的错误消息:
            • 在对应Action类所在包中新建ActionClassName.properties文件,ClassName即为包含着输入字段的Action类的类名
            • 再属性文件中添加如下键值对:invalid.fieldvalue.fieldName=Custom error message
          • 定制出错消息的样式:
            • 每一条出错消息都被打包在一个HTML span元素里,可以通过覆盖其行标为errorMessage的那个css样式来改变出错消息的格式
          • 显示错误消息:如果是simple主题,可以通过<s:fielderror name="fieldName"></s:fielderror>来显示错误消息
          • 去除filedError的ul li:template.simple的fielderror.ftl文件定义了simple主题下的s:fielderror标签的默认样式,所以修改其默认配置即可,在src目录下新建template.simple包,并新建fielderror.ftl,然后删除ul li即可
    3.自定义类型转换器
    • 为什么要自定义类型转换器:
      • 因为struts不能自动完成从字符串到引用类型的转换
    • 如何自定义类型转换器:
      • 开发类型转换器的类:实现ognl.TypeConverter接口或对这个接口的某种具体实现做扩展
      • 配置类型转换器:
        • 基于字段的配置:
          • 在该字段所在的Model(可能是Action,也可能是一个普通的JavaBean)所在的包下,新建一个ModelClassName-conversion.properties文件
          • 在该文件中属于键值对:fieldName=类型转换器的全类名
          • 第一次使用转换器时创建实例
        • 基于类型的配置:
          • 在src下新建xwork-conversion.properties
          • 键入:待转换的类型=类型转换器的全类名
          • 在当前struts2应用被加载时创建
      • 类型转换器是单实例的!
    4.类型转换与复杂对象配合使用
    • form标签的name属性可以被映射到一个属性的属性
    • 类型转换与Collection配合使用:
      • Struts允许填充Collection里面的内容,这常见于需要快速录入批量数据的场合
  • 相关阅读:
    Count and Say leetcode
    Find Minimum in Rotated Sorted Array II leetcode
    Find Minimum in Rotated Sorted Array leetcode
    Search in Rotated Sorted Array II leetcode
    search in rotated sorted array leetcode
    Substring with Concatenation of All Words
    Subsets 子集系列问题 leetcode
    Sudoku Solver Backtracking
    Valid Sudoku leetcode
    《如何求解问题》-现代启发式方法
  • 原文地址:https://www.cnblogs.com/lxc-2017/p/8530405.html
Copyright © 2011-2022 走看看