zoukankan      html  css  js  c++  java
  • Struts2 模型驱动及页面回显


        * 要从页面中获取表单元素的值,需要在动作类中声明与页面元素同名的属性。导致动作类中既有javabean又有业务方法。
        
        * 将javabean和业务方法进行分离:
            * 将重新创建一个javabean,将javabean的内容放置其中。
            * 动作类action中只留业务方法
        
        * 在动作类中声明的javabean无法从页面中获取同名的属性
        
        * 需要使用struts2框架提供"ModelDriven(模型驱动)"
            
            * 实现ModelDriven这个接口
            
            * 重写getModel()方法,返回该javabean的实例
            
            * 代码如下:
                public class UserAction extends ActionSupport implements ModelDriven<User> {

                    private User user = new User();
                    
                    public User getModel() {
                        return user;
                    }
                
                    public String add(){
                        System.out.println("UserAction ************* add()");
                        return "add";
                    }
                    
                    public String save(){
                        System.out.println("UserAction ************* save()");
                        
                        return "success";
                    }
                }
            
            * 模型驱动的原理:
                
                * 在不使用模型驱动的时候,之所以在动作类中获取不到对应的属性的原因:
                    * 在ValueStack中没有对应javabean的所有属性
                    
                * 模型驱动的作用,就是将javabean的实例压入对象栈的栈顶,从而可以获取到对应的属性的值
    页面回显技术:
        * 通过模型驱动,在动作类action中,可以获取到页面中元素的值
        
        //方法一
        * 通过javabean实例的set()方法,将新的内容set到javabean中,从而放置在页面对应元素中
            user.setUsername(newUser.getUsername());
            user.setTel(newUser.getTel());
            user.setDes(newUser.getDes());
        
        //方法二
        * 首先将值栈中,旧的javabean的内容,删除掉
        * 然后将新的内容压入到值栈中的栈顶
            ValueStack valueStack = ServletActionContext.getContext().getValueStack();
            valueStack.pop();
            valueStack.push(newUser);

  • 相关阅读:
    【c语言】二维数组中的查找,杨氏矩阵在一个二维数组中,每行都依照从左到右的递增的顺序排序,输入这种一个数组和一个数,推断数组中是否包括这个数
    oracle死锁解决经常用法(屡试不爽)
    10、Cocos2dx 3.0游戏开发找小三之容器篇:Vector、Map、Value
    程序员再回首
    mysql 下载
    BestCoder Round #4 Miaomiao&#39;s Geometry (暴力)
    SDUT 1941-Friday the Thirteenth(水)
    小白高速变大神,零基础菜鸟应该怎么学编程
    【精】iOS 文件操作:沙盒(SandBox)、文件操作(FileManager)、程序包(NSBundle)
    无线路由器硬件配置參数 NetGear篇
  • 原文地址:https://www.cnblogs.com/liuwt365/p/4211575.html
Copyright © 2011-2022 走看看