• Struts2的crud


    struts2的crud引出的问题:

    1.当Action里面有其他类的实例引用属性时,当要用请求参数为该对象的属性赋值时,如何将其压入栈顶。

    2.当有的操作(list)不需要创建该属性的实例对象时,或者需要创建实例时,如何解决。

    3.struts.xml如何配置选择某一拦截器栈(比如:paramsPrepareParams拦截器栈),又如何通过struts.xml的配置修改某一拦截器的字段值(比如:PrepareInterceptor      的 alwaysInvokePrepare属性)。

    问题解决:

    1.通过Action实现ModelDriven接口,实现其getModel()方法,getModel()方法的返回值将被压入值栈栈顶。

    2.通过Action实现Preparable接口,然后在Action里面为每一个需要的方法准备对应的prepare[ActionMethodName]方法,比如:Action里面有save()方法,则需要创建        prepareSave()方法,通过其返回值来为save()方法准备实例,不需要则可以不准备。在实现了Preparable接口时,需要实现prepare方法,默认是执行的。

    3.选择paramsPrepareParams拦截器栈,并将prepare的alwaysInvokePrepare属性赋为false,并将此栈命名为gy,而且被配置使用:

    1 <interceptors>
    2         <interceptor-stack name="gy">
    3                <interceptor-ref name="paramsPrepareParamsStack">
    4                    <param name="prepare.alwaysInvokePrepare">false</param>
    5                </interceptor-ref>
    6          </interceptor-stack>
    7 </interceptors>
    8  
    9 <default-interceptor-ref name="gy"/>
  • 相关阅读:
    socket tools
    AcWing 1172 祖孙询问
    AcWing 1170 排队布局
    AcWing 393 雇佣收银员
    AcWing 362. 区间
    基于最短路的差分约束模型
    AcWing 1169 分糖果
    树上差分
    AcWing 352 . 闇の連鎖
    AcWing 1171. 距离
  • 原文地址:https://www.cnblogs.com/gy19920604/p/4837599.html
Copyright © 2020-2023  润新知