Strut2 Action 总结

Action总结

  1. 实现一个action最常用的的方式,从ActionSupport继承
  2. DMI动态方法调用 !
  3. 通配符配置 * {1}{2}
  4. 接收参数的方法(一般用属性或者DomainModel来接收)
  5. 简单参数验证 addFieldError a> 一般不使用strut2的UI标签(
  6. 访问web元素
    • a>Map类型
      • i IoC
      • ii 依赖注入
    • b>原始类型
      • i IOC
      • ii 依赖注入
  7. 包含文件配置
  8. 默认action处理

Result总结

Result 类型:

  1. dispatcher 利用服务器实现跳转,且只能跳转到页面
  2. redirect 客户端,视图
  3. chain 利用服务器实现跳转,且只能跳转到action
  4. redirectAction 客户端 action
  5. freemarker
  6. httpheader 发送http头信息
  7. stream 下载要用到
  8. velocity
  9. xslt xml相关的修饰语言
  10. plaintext 显示页面源码,教学网站
  11. tiles 将页面分为几块,每块可以动态指定

其中常用的四种类型:

dispatcher
redirect
chain
redirectAction

全局结果集

<global-results>  extends

动态结果

在action中保存一个属性 , 存储具体的结果location

传递参数

  • 客户端调转(redirect)才需要
  • ${}表达式(如果编译器保存,则window->prefrences->MyEclipse->validation->struts 2 validator 的 Build的对勾去掉,一般取ValueStack里的内容)

OGNL相关知识点

  1. 只有传值,DomainModel才会初始化,当然可以手动初始化

  2. DomainModel中必须保留一个空值的构造函数,否则会出现InstantException

通过标签对容器进行访问的方法

  • 访问List<s:property value="users"/><br>

  • 访问List中某个元素: <s:property value="users[1]"/><br>

  • 访问List中元素某个属性的集合: <s:property value="users.{age}"/><br>

  • 访问List中元素某个属性集合中的特定值: <s:property value="users.{age}[0]"/> | <s:property value="users[0].age"/><br>

  • 访问Set<s:property value="dogs"/><br>

  • 访问Set中某个元素: <s:property value="dogs[0]"/><br>

  • 访问MAP<s:property value="dogMap"/><br>

  • 访问Map中某个元素: <s:property value="dogMap.dog001"/> | <s:property value="dogMap['dog001']"/>| <s:property value="dogMap[\"dog001\"]"/><br>

  • 访问Map中所有keys<s:property value="dogMap.keys"/><br>

  • 访问Map中所有values<s:property value="dogMap.values"/><br>

  • 访问容器大小: <s:property value="dogMap.size()"/> | <s:property value="dogMap.size"/><br>

This is an example image

投影语法:

投影:
投影: 1}.{age}”/>
投影: 1}.{age}”/>

struts-tags

  • property : <s:property value="username"/><br>
  • property string: <s:property value="'username'"/><br>
  • property defalut: <s:property value="admin" default="管理员"/><br>
  • property 显示html元素: <s:property value="'<hr/>'" escape="false"/><br>

  • set 设定adminName值(默认设置在request和ActionContext) <s:set var="adminName" value="username"/><br>

  • setrequest取值 <s:property value="#request.adminName" /><br>
  • setActionContext取值 <s:property value="#adminName" /><br>

  • set 设定范围:<s:set var="adminPassword" value="password" scope="page"/><br>

  • set 从相应的范围内取值:<%=pageContext.getAttribute("adminPassword") %><br> --%>

  • set 设定范围:<s:set var="adminPassword" value="password" scope="session"/><br>
  • set 使用#取值 <s:property value="#adminPassword"/><br>
  • set 使用范围取值 <s:property value="#session.adminPassword"/><br>

如果set里有scope属性的设置的话,不会设置到ActionContext

This is an example image

热评文章