Why can the el expression get the value in the struts value stack

 

Why can the el expression get the value in the struts value stack

 

1. The el expression itself will be obtained from request, session, application, pagecontext

 

 

2. Since the request is wrapped in StrutsPrepareAndExecuteFilter (request = prepare.wrapRequest(request);) StrutsRequestWrapper,

This request overrides the getAttribute method again:

 

This method realizes the acquisition from the original requset, session, etc., and then can not get it and then get it from the value stack

 

public Object getAttribute(String s) {

        if (s != null && s.startsWith("javax.servlet")) {

            // don't bother with the standard javax.servlet attributes, we can short-circuit this

            // see WW-953 and the forums post linked in that issue for more info

            return super.getAttribute(s);

        }

 

        ActionContext ctx = ActionContext.getContext();

        Object attribute = super.getAttribute(s);

        if (ctx != null) {

            if (attribute == null) {

                boolean alreadyIn = false;

                Boolean b = (Boolean) ctx.get("__requestWrapper.getAttribute");

                if (b != null) {

                    alreadyIn = b.booleanValue();

                }

    

                // note: we don't let # come through or else a request for

                // #attr.foo or #request.foo could cause an endless loop

                if (!alreadyIn && s.indexOf("#") == -1) {

                    try {

                        // If not found, then try the ValueStack

                        ctx.put("__requestWrapper.getAttribute", Boolean.TRUE);

                        ValueStack stack = ctx.getValueStack();

                        if (stack != null) {

                            attribute = stack.findValue(s);

                        }

                    } finally {

                        ctx.put("__requestWrapper.getAttribute", Boolean.FALSE);

                    }

                }

            }

        }

        return attribute;

    }

 

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=326141729&siteId=291194637