1.ognl表达式符号
# 获取非根元素值 、 动态都建map集合
$ 配置文件取值
% 提供一个ognl表达式运行环境
<body> <br/>获取request域数据<br/> <!-- property 标签是对象类型的标签,默认支持ognl表达式, 会从根元素去China名称对应的值 --> <s:property value="China"/> <br/> <!-- 如果直接赋值,需要用单引号 --> <s:property value="'China'"/> <br/> <s:property value="%{#request.cn}"/> <br/>
<!-- 值类型的标签,value值默认就是值类型,不支持ognl表达式 --> 国家:<s:textfield name="txtCountry" value="%{#request.cn}"></s:textfield> </body> |
2.数据回显
常规办法:要用struts标签
user.java
public class user { private String username; private String pwd; private String email; private Date birth;}
useraction.java
public class useraction extends ActionSupport {
// 此处是0封装请求数据 与回显数据无关
private User user = new User();
public user getUser() { return user; } public void setUser(user user) { this.user = user; } public String viewupdate(){ user userinfo =new user(); userinfo.setUsername("jack"); userinfo.setEmail("fangfang@itcast.cn"); ActionContext ac= ActionContext.getContext(); Map<String, Object>request=(Map<String, Object>)ac.get("request"); request.put("userinfo", userinfo); //注意此处书写格式 return "viewupdate";
}
}
viewupdate.jsp <body> <s:form action="#"> 用户名:<s:textfield name="user.username" value="%{#request.userinfo.username}"></s:textfield><br/> 邮箱:<s:textfield name="user.email" value="%{#request.userinfo.email}"></s:textfield> </s:form> </body>
采用回显技术
public String viewUpdate() { // 模拟一个对象(先获取一个id,再根据id调用service查询,把查到的结果保存到域) User userInfo = new User(); userInfo.setUserName("Jack"); userInfo.setEmail("yuanjie@itcast.cn"); ActionContext ac = ActionContext.getContext(); // Map<String,Object> request = (Map<String, Object>) ac.get("request"); // request.put("userInfo", userInfo); /************* 数据回显***************/ // 获取值栈 ValueStack vs = ac.getValueStack(); vs.pop();// 移除栈顶元素 移除封装数据 同样不移除 也能取到值 vs.push(userInfo); // 入栈 // 进入修改页面 return "viewUpdate"; }
回显取值:
<!-- 数据回显技术:s:textfield会自动查找根元素数据(Ognl表达式语言取值) --> <s:form action="#"> 用户名: <s:textfield name="userName"></s:textfield> <br/> 邮箱: <s:textfield name="email"></s:textfield> <br/> <s:submit value="修改"></s:submit> </s:form> <s:debug></s:debug>