`
somebody
  • 浏览: 81287 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

interceptor和ognlvaluestack

阅读更多
只是自己的想法,不对不要扔鸡蛋哦。

今天突发奇想的实现一个小小的cache。把分类categories放入map中,cache起来。
    private void cache() {
        
if(log.isDebugEnabled()){
            log.debug(
"Starting cache the categories");
        }
        cacheCategoryMap 
= new HashMap();
        cacheCategoryMap.put(
"categories",categoryDao.getCategories());
    }

然后我想在interceptor里面把categories写到ognlvaluestack里面这样我在ftl里面就可以<#list categories>....</#list>了。因为这个是在每个页面的header.ftl里面的。我也就不需要再每个action里面去get一下了。
刚开始我implements Interceptor

        final OgnlValueStack stack = ActionContext.getContext().getValueStack();
        stack.setValue(
"categories" ,categoryManager.getCategories());
        
return invocation.invoke();
可是这样也不可以。后来我想到是不是action执行完毕之后就把stack中的这个值清空了我又用了。AroundInterceptor 我想在after里面去设置不就可以了。
    protected void after(ActionInvocation dispatcher, String result) throws Exception {
        
final OgnlValueStack stack = ActionContext.getContext().getValueStack();
        stack.setValue(
"categories" ,categoryManager.getCategories());
    }
可是这样还是不可以。我晕了。我想是不是要在action里面声明一下categories。
    private List categories;

    
public List getCategories() {
        
return categories;
    }


    
public void setCategories(List categories) {
        
this.categories = categories;
    }

然后在before里面去get就可以了。
    protected void before(ActionInvocation invocation) throws Exception {
        
final OgnlValueStack stack = ActionContext.getContext().getValueStack();
        stack.setValue(
"categories" ,categoryManager.getCategories());
    }

总算实现了。不过还要在每个action里面声明一下categories,这样还是很不好的。刚才有人建议用filter。我在试试吧.


http://leaf.jdk.cn/index.php/archives/91

相关推荐

    xwork-core-2.2.1-sources

    在源码中,ValueStack的实现类如OgnlValueStack,使用OGNL(Object-Graph Navigation Language)表达式语言来获取和设置栈中的对象属性,使得视图可以直接引用Action或模型中的数据。 除此之外,xwork-core还包含了...

    轻量 J2EE 应用程序开发-MVC with Webwork2 – Xwork

    LoginAction 和 LoginInterceptor 是两种常见的 Action 和 Interceptor,用于实现用户登录和身份验证。 Action Result 和 ActionChainResult 是两种结果对象,用于存储 Action 的执行结果和链式调用结果。EL...

    xwork-2.1.6.rar

    在源码中,`com.opensymphony.xwork2.util.ValueStack`和`ognl.OgnlValueStack`是两个关键类。 6. **配置与容器** XWork使用XML配置文件定义Action和拦截器,同时依赖于一个容器(如Spring)来管理对象。`...

    Struts2在Action中获得Response对象的四种方法

    这种方法和第 1 种方法类似。动作类需要实现一个 org.apache.struts2.interceptor.RequestAware 接口。所不同的是,RequestAware 将获得一个 com.opensymphony.xwork2.util.OgnlValueStack 对象,这个对象可以获得 ...

    struts2下的xwork源码

    7. **OgnlValueStack**:Struts2使用OGNL(Object-Graph Navigation Language)作为默认的表达式语言,OgnlValueStack是ValueStack的实现,提供OGNL表达式的解析和操作。 8. **ResultTypes**:Struts2支持多种...

    WebWork教程

    此外,还涵盖了ResultType(结果类型)的使用、表达式语言EL和OGNL的介绍以及值堆栈(OgnlValueStack)的概念。WebWork的拦截器(Interceptor)框架和验证框架也是教程的重要内容,它们允许开发者在运行时添加额外的...

    struts-2.3.16 源码

    3. **ognl.OgnlValueStack**:这是OGNL表达式执行的核心类,负责对象属性的获取和设置。 4. **Interceptor栈**:深入理解如何配置和使用拦截器,以及它们在请求处理过程中的作用。 5. **Result类型**:研究如何...

    struts-2.1.6 API 文档

    `OgnlValueStack`是默认实现,使用OGNL表达式语言进行对象访问。 5. **Struts标签库**:提供了丰富的JSP标签,简化视图层的开发。例如,`s:textfield`用于创建输入字段,`s:submit`用于提交表单,`s:action`用于...

    xwork2源代码(整理)

    `com.opensymphony.xwork2.ognl`包下的OgnlValueStack和OgnlUtil等类,是Ognl在xwork2中的具体实现。 在异常处理方面,xwork2提供了ActionError和ActionException等类,用于处理和展示应用程序运行时出现的错误。...

    xwork源代码(webwork源代码,xwork source,)

    `OgnlValueStack`使用OGNL(Object-Graph Navigation Language)表达式语言来获取和设置对象属性,提供了强大的数据访问能力。 4. **拦截器(Interceptor)** 拦截器是XWork的一大特色,它在动作执行前后插入...

    stucts2描述

    1. **ValueStack内部结构**:`OgnlValueStack`是Struts2中用于存储和管理数据的关键组件。其内部包含了一个`CompoundRoot`对象,用于存放当前的Action对象,以及一个`Map, Object&gt;`对象,用于存储各种上下文信息,如...

    webwork教程

    - 通过值堆栈(OgnlValueStack)来管理和操作数据。 - **Interceptor框架**: - Interceptor框架允许开发者编写自定义的拦截器来处理请求。 - 拦截器可以用来进行事务管理、性能监控、安全验证等功能。 - **验证...

    Struts2教程:获得HttpServletResponse对象

    OgnlValueStack stack = (OgnlValueStack) request.get("struts.valueStack"); response = (HttpServletResponse) stack.getContext().get("struts.servlet.response"); } } ``` 通过实现`RequestAware`接口,`...

    STRUTS2源代码

    3. **Interceptor(拦截器)**:拦截器是Struts2的核心特性,它允许在Action调用前后插入自定义的处理逻辑。常见的拦截器如Validation拦截器用于表单验证,SessionAware拦截器处理会话相关的操作。 4. **ValueStack...

    Xwork——Struts2核心

    - **OgnlValueStack**:是ValueStack的具体实现之一,它为OGNL提供了直接操作ValueStack的能力。 - **ActionContext和OgnlStackValue**:`ActionContext`和`OgnlStackValue`是Xwork中用于管理ValueStack和OGNL交互的...

Global site tag (gtag.js) - Google Analytics