中的value=“”还是挺有用的,比如说更新之前,根据需要更新的用户(地址、商品等等等等)的id,在updateInput方法中,先做一些准备,根据这个id去数据库取属性出来,放到ActionContext中,到时候取出来

在textfield标签,name=""  value="" 以及在<s:property>标签中的value="";都是不一样的机制

先说<s:property>标签中的value="",这个是典型的ognl表达式的取值,

(先要说明的一件事就是,modeldriven把一个user对象暴露在外面,是为了封装参数传递过来的属性,只要表单提交或者url中有同名的参数,就会给user对象的属性赋值,并放在栈顶,但是,需要注意的是,这个是ModelDriven的效果,在没有ModelDriven之前,暴露在栈顶的其实是UserAction的属性域,尽管用属性域Struts2自动封装属性是不错的选择,但是毕竟属性太多,在在Action中写这些还是不合适, ModelDriven的出现,直接用一个对象作为属性即可。现在有了ModelDriven覆盖了栈顶,栈顶下面,还是有UserAction的属性域。所以简单说就是有两个User。)

<s:property>中,根据ognl表达式的规则:

1、加#,从actioncontext的map中取,"#key"得到的是key对应的value的值。如果value是一个map或者是一个对象,value.key(或者属性)可以在往里面取。这个比较简单。

2、不加#,从栈中取,比如栈顶是id,username group(这是个对象),栈顶之下是user userService(忽略它)等,那么赋值怎么赋,取值又怎么取呢?再比如说,栈顶之下也有id username属性,这个又怎么取?

先说赋值,参数中的group.id可以直接赋值给栈顶对象中的group属性,所以这个时候如果是user多对group一,那么如果想维护关系,不需要new 一个group,再set id,再new一个user,再setgroup,再saveuser,不需要这样,ModelDriven自己建了两个对象,user和group,并自动封装,group.id是由参数传进来,(这样对应的关系似乎比较难理解,但是如果是用户user和地址address的关系就好理解了,对一个用户添加一个地址),对一个组添加一个user,那么group.id直接过来,赋值进去,user的属性可以通过表单来传,那么就得到了一个实体user,一个实体group,就可以save了,而且关系还对应的非常好。

再说取值:不加#,现在栈顶找,找到了用这个值,如果找不到,分两种情况,第一种是没有这个属性,那么就往下找,找到了就获得这个值(这点很重要,比如user这个实体对象,在栈顶有一份,在栈底还有一份,栈顶的有可能已经接收了传过来的id,其他属性是null,但是栈底的user如果已经把load出来的对象赋给它并且开启了opensessioninviewer,那么可以直接在input表单中用ognl表达式取),第二种是有这个属性但是没有赋值,在<s:property>的ognl中是得到null,即使栈顶之下还有这个属性而且是赋值了的。这一点和El表达式不同。el表达式遇到没赋值的一直找到栈底(待核实)

再说<s:textfield>标签,在没有value标签干扰的情况下,name属性中的值的取值符合ognl的规则,和刚才<s:property>中的value取值是一样的,但是name的值是要用来传值给后面的所以不能改。

这就需要其中的value的值,value的值似乎不能取栈中的值,不过可以存到actioncontext中,这个时候要注意,用%{}来取值,在checkboxlist中可以用#{}来访问不过依然建议使用%{}

<s:textfield>标签的更多相关文章

  1. embed标签loop=true背景音乐无法循环

    在html网页中加入背景音乐并设置为循环播放.一开始用<embed>标签,设置loop="true", 但是结果发现在IE浏览器可以,但是在chrome浏览器却无法实现 ...

  2. 【转】object标签和embed标签

    我们现在大部分人做网页,都是直接用DW插入flash,而且DW也是所见即所得,直接生成了相应的flash显示代码.可是我们又有多少人了解这些直接由DW生成的代码呢?其实我接触flash player标 ...

  3. embed标签的使用(在网页中播放各种音频视频的插件的使用)

    播放器插件使用说明: 代码:< EMBED src=“music.mid”autostart=“true”loop=“2”width=“80”height=“30”> src:音乐文件的路 ...

  4. as3.0 [Embed]标签嵌入外部资源

    1.[Embed]嵌入资源 ActionScript代码的顺序非常重要.你必须在声明变量前添加[Embed]元数据标签,而且这个变量的类型会是Class; package { import flash ...

  5. 解决embed标签显示在div上层【转藏】

    解决embed标签显示在div上层,非设置z-index 今天给屌炸了爆笑网增加了视频栏目,但是发现在IE8中,顶部浮动导航的div在移动到embed视频上时,总是被embed的flash文件盖住.分 ...

  6. OBJECT和EMBED标签(转载)

    一.介绍: 我们要在网页中正常显示flash内容,那么页面中必须要有指定flash路径的标 签.也就是OBJECT和EMBED标签.OBJECT标签是用于windows平台的IE浏览器的,而EMBED ...

  7. 转: object 和embed 标签播放flash

    一.介绍: 我们要在网页中正常显示flash内容,那么页面中必须要有指定flash路径的标 签.也就是OBJECT和 EMBED标签.OBJECT标签是用于windows平台的IE浏览器的,而EMBE ...

  8. OBJECT和EMBED标签

    一.介绍: 我们要在网页中正常显示flash内容,那么页面中必须要有指定flash路径的标 签.也就是OBJECT和EMBED标签.OBJECT标签是用于windows平台的IE浏览器的,而EMBED ...

  9. HTML 5 <embed> 标签

    定义和用法 <embed> 标签定义嵌入的内容,比如插件. 实例 <embed src="helloworld.swf" />

  10. chrome不支持embed标签解决方案

    <!DOCTYPE html> <html> <head> <title></title> <meta http-equiv=&quo ...

随机推荐

  1. mysql常用命令(3)

    一.启动与关闭 1.1 Linux下启动mysql 的命令: a. rpm包安装:service mysqld start b. 源码包安装:/usr/local/mysql/bin/mysqld_s ...

  2. Map.Entry

    Map.Entry Map是java中的接口,Map.Entry是Map的一个内部接口. Map提供了一些常用方法,如keySet().entrySet()等方法,keySet()方法返回值是Map中 ...

  3. Android中帧布局-FrameLayout和网格布局-GridLayout

    帧布局-FrameLayout 一.概念 帧布局中,容器为每个加入其中的空间创建一个空白的区域(成为一帧).每个空间占据一帧,这些帧会按gravity属性自动对齐. 帧布局的效果是将其中的所有空间叠加 ...

  4. GMF Q&A(1): 如何让palette支持拖拽(DnD)等10则

    1,如何让palette支持拖拽(DnD) 在*PaletteFactory类中,把私有类NodeToolEntry 和LinkToolEntry的基类修改为PaletteToolEntry.并在构造 ...

  5. Duilib实现QQ聊天窗口晃动

    转载:http://blog.csdn.net/arbboter/article/details/26282717 转载:http://blog.csdn.net/zerolusta/article/ ...

  6. Python3基础 print 查看一个列表中存储的所有内容

    镇场诗:---大梦谁觉,水月中建博客.百千磨难,才知世事无常.---今持佛语,技术无量愿学.愿尽所学,铸一良心博客.------------------------------------------ ...

  7. mysql中查询语句中的一个知识点说明

    1, 简单说明. select * from tb_name where 1[不为零即可];则会显示所有记录,select * from tb_name where 0;则不显示任何记录 假设数据库中 ...

  8. 文件上传和下载(可批量上传)——Spring(二)

    针对SpringMVC的文件上传和下载.下载用之前“文件上传和下载——基础(一)”的依然可以,但是上传功能要修改,这是因为springMVC 都为我们封装好成自己的文件对象了,转换的过程就在我们所配置 ...

  9. 定时器图片轮播淡入淡出基本功能已实现,正在修改BUG中。。(附图效果和源代码)

    用JQ写的源码如下: 实现功能: 1,图片自动按顺序轮播,轮播选中的图片透明度为1,其他为0.1: 2,鼠标停在的图片上透明度为1,其他为0.1: 3,鼠标离开,继续轮播,起始位置为鼠标停在的图片的下 ...

  10. End Routine

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...