中的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. php中rsa加密解密验证

    RSA非对称加密,对敏感的数据传输进行数据加密.验证等.测试环境:wamp.aliyun虚拟主机(lamp)一.加密解密的第一步是生成公钥.私钥对,私钥加密的内容能通过公钥解密(反过来亦可以).下载生 ...

  2. 05-IP核应用之计数器——小梅哥FPGA设计思想与验证方法视频教程配套文档

    芯航线--普利斯顿队长精心奉献   实验目的:了解FPGA的IP核相关知识并以计数器IP核为例学会基本IP使用的流程 实验平台:无 实验原理:     IP核(Intellectual Propert ...

  3. mysql重复索引、冗余索引、未使用索引的定义和查找

    1.冗余和重复索引 mysql允许在相同列上创建多个索引,无论是有意还是无意,mysql需要单独维护重复的索引,并且优化器在优化查询的时候也需要逐个地进行考虑,这会影响性能.重复索引是指的在相同的列上 ...

  4. [转]unicode,ansi,utf-8,unicode big endian的故事

    unicode,ansi,utf-8,unicode big endian的故事很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物.他们看到8个开关状态是好的 ...

  5. INPUT只能输入数字

    input只能输入数字: (只能输入数字,并且输入的值不能大于99),但是这样有个问题,就是当输入非数字字符时,输入框中所有的字符都会被清除 <input type="text&quo ...

  6. xshell 终端窗口目录显示为深蓝色的不易分辨问题

    xshell更改终端窗口目录展示深蓝色的不易分辨 经常使用xshell远程连接服务器,使用ls命令,目录的颜色都是深蓝色, 如果终端窗口背景颜色是黑色的(对眼睛较好的黑色的背景色,大家一般都选择黑色背 ...

  7. 《BI项目笔记》基于雪花模型的维度设计

    GBGradeCode 外键关系: 1 烟叶等级 T_GBGradeCode.I_DistinctionID=T_Distinction.I_DistinctionID 烟叶等级分为:上等烟.中等烟. ...

  8. python成长之路【第七篇】:面向对象

    概述 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发“更快更好更强...” 面向对象三大特性 面向 ...

  9. mysql的初识--DOS下的简单命令

    DOS下进入 1.通过程序中的mySQL的:MySQL 5.6 Command Line Client直接进入mySQL的命令行: 2.或者通过WIn+R-->输入cmd,然后C:等一层一层找到 ...

  10. 点击a标签,跳转到iframe中,并在iframe中显示指定的页面

    点击a标签,跳转到iframe中,并在iframe中显示指定的页面 1.用a标签的target属性 <iframe id="myFrameId" name="myF ...