textfield标签数据回显(name回显)
注意:区别与其他标签的value属性进行回显
<s:textfield name="content"/>
<s:property value="content"/>
以上两种方式不同之处在于textfield在一个文本框里面回显,而property直接在一个空白处(类似label)回显。
例如下面这个标签有两种方式(name赋值)实现回显:
<td><s:textfield name="user.username"/></td>
-
1) 将user作为action的实例变量
Action跳转时是这样的
public class UserAction extends ActionSupport {
private User user;
......
public String editUI()
{
user = userService.findById(user.getId());
return "editUI";
}
}
-
2)如果user 不是实例变量:
Action跳转时是这样的
public String editUI() {
User user = new User();
ActionContext ac = ActionContext.getContext();
/************* 数据回显***************/
// 获取值栈
ValueStack vs = ac.getValueStack();
vs.pop();// 移除栈顶元素
vs.push(user); // 入栈
// 进入修改页面
return "editUI";
}
并且这时的标签可以简写为:
<s:textfield name="username"/>
综上所述,要想完成数据回显,必须将要回显的对象放在ValueStack的根元素上。这样Ognl表达式才能取到值,实现回显。
select标签数据回显
-
struts2的select标签中,常用属性:
(1)list:创建列表的可迭代数据源, 必设项(list必须有值,如果没值则必须设置headerKey, headerValue)。如果该列表是一个Map(key, value), 那么Map的主键将作为选项()的”value”属性, 而该主键对应的值作为选项的文本内容.是必须设置的选项,如果是一个List或者是一个Set,那么可以通过listKey和listValue指定。
(2)headerKey:设置列表的题头主键值. 一定不能为空值! “’-1’”或”””是正确的取值, “”是错误的取值。
(3)headerValue:列表的题头选项值。
(4)listKey:列表数据源中元素对象的属性, 用于获取选项的值,对应于select标签中的value。
(5)listValue:表数据源中元素对象的属性, 用于获取选项的文本内容,对应于select标签中的option。
(6)name:元素的名字。
jsp页面:
<!-- 因为提交的本来就是listkey,将list选项中对应的选项的id,赋值name属性(transferHistory.newSeller.id) -->
<!-- 提交表单save的时候,进行javabean数据封装,封装到transferHistory对象中 -->
<s:select
name="transferHistory.newSeller.id"
list="#request.listEmployee"
headerKey="-1"
headerValue="请选择"
listKey="id"
listValue="name">
</s:select>
Action页面:
public String viewEdit(){
// 主键查询客户对象
if (customer != null){
customer = customerService.findById(customer.getId());
}
// 查询所有的营销人员(jsp页面用户选择)
List<Employee> list = employeeService.getAll();
request.put("listEmployee", list);
return "edit";
}
property标签数据回显
直接通过value值进行回显
jsp页面:
<s:property value="content"/>
Action页面:
同select标签上的Action页面
另外对于像下面这样的标签也能很方便的完成数据回显:
<s:radio name="gender" id="gender" list="#{'男':'男','女':'女'}"></s:radio>
<s:select list="#session.departlist" listKey="id" listValue="dname" name="depart" ></s:select>