中的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. javaWeb 使用 filter 处理 html 标签问题

    1.web.xml代码 <filter> <filter-name>HtmlFilter</filter-name> <filter-class>de. ...

  2. php计算两个日期相差 年 月 日

    在PHP程序中,很多时候都会遇到处理时间的问题,比如:判断用户在线了多长时间,共登录了多少天,两个帖子发布的时间差或者是不同操作之间的日志记录等等.在文章中,简单地举例介绍了PHP中如何计算两个日期相 ...

  3. JS去掉数组的重复项

    自己知道思路怎么去,但是就是自己不会写,在网上找了一些来看,有些还是没有怎么看明白.学习到了这么一种方法 var a=['ss','dd','ss','cc','dd',1,2,1] var b={} ...

  4. 2015弱校联盟(1) -A. Easy Math

    A. Easy Math Time Limit: 2000ms Memory Limit: 65536KB Given n integers a1,a2,-,an, check if the sum ...

  5. void与void *

    转载:http://blog.csdn.net/geekcome/article/details/6249151 void的含义 void即“无类型”,void *则为“无类型指针”,可以指向任何数据 ...

  6. easyui datagrid 仿ext—右键

    var createGridHeaderContextMenu = function(e, field) { e.preventDefault(); var grid = $(this);/* gri ...

  7. C++string中有关大小和容量的函数浅析

    1.length()与size() length是因为沿用C语言的习惯而保留下来的,string类最初只有length,引入STL之后,为了兼容又加入了size,它是作为STL容器的属性存在的,便于符 ...

  8. 继续Kanzi

    转眼间,Kanzi已经发展到3.3版本了,之前研究过的东西,今天有空下了个版本跟进更新看看有没有什么变化.新的引擎跟以前2.x版本有很大的差别.新引擎增加了很多新功能(包括局部刷新技术),也跟随大潮加 ...

  9. 学习mongo系列(十一)关系

    准备工作:首先在maxh数据库的address集合中先插入数据 > db.address.insert({child_address:"gansu"}) WriteResul ...

  10. cordova环境搭建,搭建项目,以及拍照功能的实现

    一.配置环境 1.配置java环境: 下载对应系统环境的jdk:http://www.oracle.com/technetwork/java/javase/downloads/index-jsp-13 ...