struts 数据回显 和 ognl表达式常用符号

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>
原文地址:https://www.cnblogs.com/yimian/p/7825172.html