详解property标签跟textfield标签的name和value属性

详解property标签和textfield标签的name和value属性
假定message1的数值为hi.

1.property标签
根据value属性的string根据java bean的规范用get方法从值栈中取值,若没有get方法则获取不到数值
<s:property value="message1"/>
,也可以用
<s:property value="%{message1}"/>
,没有区别,但是为什么要多写代码呢?没有人用后一种方法,只是webwork支持用%{*}来进行ongl表达式取值。
要鄙视用后一种方法的人

2.textfield标签

<s:textfield  name="message1"/>
,实际输出为
<input type="text" name="message1" value="hi." id="message1"/>
,这是最正常的写法,name,id和value都被设置了
<s:textfield  value="%{message1}" name="sss"/>
,实际输出为
<input type="text" name="sss" value="hi." id="sss"/>
,name和id都被设置成标签里缩写的name的值sss了,当name不同,而数值一样,有可能会这样,比如我们在修改客户信息的时候,又想保持客户的原有信息就可以这么写,但是尽量还是用别的大家容易理解的方法写吧。
<s:textfield value="%{message1}"/>
,这样会输出什么呢?这样输出的是
<input type="text" name="" value="hi." id=""/>
,你肯定不需要这样的东西的。

%{message1}这样的东西可以直接用吗?不可以的。
只有在标签中,这样写才会被认为是表达式,否则,这样写,会被认为是普通的字符串来输出的。
<s:textfield  name="%{message1}" value="%{'ddd'}"/>
,再来个变态的
实际输出为
<input type="text" name="hi." value="ddd" id="hi_"/>

这样的就更没用了,只是为了说明标签中才支持ongl表达式