<s:textfield>标签
中的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>标签的更多相关文章
- embed标签loop=true背景音乐无法循环
在html网页中加入背景音乐并设置为循环播放.一开始用<embed>标签,设置loop="true", 但是结果发现在IE浏览器可以,但是在chrome浏览器却无法实现 ...
- 【转】object标签和embed标签
我们现在大部分人做网页,都是直接用DW插入flash,而且DW也是所见即所得,直接生成了相应的flash显示代码.可是我们又有多少人了解这些直接由DW生成的代码呢?其实我接触flash player标 ...
- embed标签的使用(在网页中播放各种音频视频的插件的使用)
播放器插件使用说明: 代码:< EMBED src=“music.mid”autostart=“true”loop=“2”width=“80”height=“30”> src:音乐文件的路 ...
- as3.0 [Embed]标签嵌入外部资源
1.[Embed]嵌入资源 ActionScript代码的顺序非常重要.你必须在声明变量前添加[Embed]元数据标签,而且这个变量的类型会是Class; package { import flash ...
- 解决embed标签显示在div上层【转藏】
解决embed标签显示在div上层,非设置z-index 今天给屌炸了爆笑网增加了视频栏目,但是发现在IE8中,顶部浮动导航的div在移动到embed视频上时,总是被embed的flash文件盖住.分 ...
- OBJECT和EMBED标签(转载)
一.介绍: 我们要在网页中正常显示flash内容,那么页面中必须要有指定flash路径的标 签.也就是OBJECT和EMBED标签.OBJECT标签是用于windows平台的IE浏览器的,而EMBED ...
- 转: object 和embed 标签播放flash
一.介绍: 我们要在网页中正常显示flash内容,那么页面中必须要有指定flash路径的标 签.也就是OBJECT和 EMBED标签.OBJECT标签是用于windows平台的IE浏览器的,而EMBE ...
- OBJECT和EMBED标签
一.介绍: 我们要在网页中正常显示flash内容,那么页面中必须要有指定flash路径的标 签.也就是OBJECT和EMBED标签.OBJECT标签是用于windows平台的IE浏览器的,而EMBED ...
- HTML 5 <embed> 标签
定义和用法 <embed> 标签定义嵌入的内容,比如插件. 实例 <embed src="helloworld.swf" />
- chrome不支持embed标签解决方案
<!DOCTYPE html> <html> <head> <title></title> <meta http-equiv=&quo ...
随机推荐
- 禁止输入中文 与 禁止输入数字在phonegap api环境效果
例子如下: <!doctype html> <html> <head> <meta charset="utf-8"> <tit ...
- Thinkphp单字母快捷键
在ThinkPHP中有许多使用简便的单字母函数(即快捷方法),可以很方便开发者快速的调用,但是字母函数却不方便记忆,本文将所有的字母函数总结一下,以方便以后查找. 1.U() URL组装 支持不同UR ...
- HDU Coprime
Coprime Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Total S ...
- 弹窗的封装(css,js) 和弹窗的例子
//每个弹窗的标识 var x =0; var idzt = new Array(); var Window = function(config){ //ID不重复 idzt[x] = "z ...
- [问题2015S08] 复旦高等代数 II(14级)每周一题(第九教学周)
[问题2015S08] 设 \(A\) 为 \(n\) 阶复方阵, 证明: \(A\overline{A}\) 与 \(\overline{A}A\) 相似, 其中 \(\overline{A}\) ...
- Hibernate配置文件
<?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hi ...
- (转) C/C++中const关键字详解
文章转自 http://www.cnblogs.com/yc_sunniwell/archive/2010/07/14/1777416.html 为什么使用const?采用符号常量写出的代码更容易维 ...
- 《BI项目笔记》用Excel2013连接和浏览OLAP多维数据集
用Excel2013连接和浏览OLAP多维数据集
- [bzoj1103][POI2007]大都市meg(树状数组+dfs序)
1103: [POI2007]大都市meg Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2031 Solved: 1069[Submit][Sta ...
- shiro的Helloworld
package shiro; import org.apache.shiro.SecurityUtils; import org.apache.shiro.authc.UsernamePassword ...