ok, this is what i did given the existing wicket code. i'm sure it can be done 
better by changing the code itself

1. change newWebRequest in QrmApplication
protected WebRequest newWebRequest(final HttpServletRequest servletRequest) {
        if (servletRequest.getPathInfo() == null) {
                if 
(servletRequest.getAttribute("javax.servlet.include.request_uri") != null) {
                        return new IncludedServletWebRequest(servletRequest);
                }
                
                if 
(servletRequest.getAttribute("javax.servlet.forward.request_uri") != null) {
                        return new ForwardedServletWebRequest(servletRequest);
                }
                
                log.error("Could not find an implementation of WebRequest that fits 
this request. trying the default");
                
        }
        
        return super.newWebRequest(servletRequest);
   }

2. create IncludedServletWebRequest and ForwardedServletWebRequest. they extend 
BaseServletWebRequest
for IncludedServletWebRequest:
        public String getPath() {
                return 
(String)getHttpServletRequest().getAttribute("javax.servlet.include.path_info");
                
        }

        public String getContextPath() {
                return 
(String)getHttpServletRequest().getAttribute("javax.servlet.include.context_path");
        }

        public String getServletPath() {
                return 
(String)getHttpServletRequest().getAttribute("javax.servlet.include.servlet_path");
        }

3. create BaseServletWebRequest, extending ServletWebRequest and rewrite 
getRelativeURL

        public String getRelativeURL() {
                /**
                 * Servlet 2.3 specification :
* * Servlet Path: The path section that directly corresponds to the
                 * mapping which activated this request. This path starts with a 
"/"
                 * character except in the case where the request is matched 
with the
                 * "/*" pattern, in which case it is the empty string.
* * PathInfo: The part of the request path that is not part of the
                 * Context Path or the Servlet Path. It is either null if there 
is no
                 * extra path, or is a string with a leading "/".
                 */
                String url = getServletPath();
                final String pathInfo = getPath();

                if (pathInfo != null)
                {
                        url += pathInfo;
                }

                final String queryString = 
getHttpServletRequest().getQueryString();

                if (queryString != null)
                {
                        url += ("?" + queryString);
                }

                // If url is non-empty it has to start with '/', which we 
should lose
                if (!url.equals(""))
                {
                        // Remove leading '/'
                        url = url.substring(1);
                }
                return url;
        }


4. if using a form create an EmbeddedForm class, and override the onComponentTag

here i can't give a generic code, but the basic thing is to rewrite the action, 
tag, so it goes to the original page, and put the action as a parameter in the 
url, which is used by the containing page to include

        protected void onComponentTag(ComponentTag tag) {
                super.onComponentTag(tag);
                String action = tag.getAttributes().getString("action");
                Map parameters = new HashMap(getRequest().getParameterMap());
                parameters.put("wicketAction", action);
                String newAction = containingUrl + StringUtils.toString(parameters, 
"&", null);
                tag.put("action", newAction);
        }

in the jsp, the code should be something like
<jsp:include page="<%=request.getParameter("wicketAction") == null ? "url-to-wicket" : 
request.getParameter("wicketAction") %>"/>

hope it helps,

ittay



Juergen Donnerstag wrote:
Sure. An example is more than welcome.

Juergen

On 5/9/06, Ittay Dror <[EMAIL PROTECTED]> wrote:
i've done some work to enable embedding wicket pages in jsp pages. this is required by us, since we're currently using struts, and can't move all our code to wicket. i think it is important to enable existing projects to start using wicket.

the main problems in that HttpServletRequest.getPath() returns null for forwarded/included pages

i can submit the code if you want

--
===================================
Ittay Dror
Chief architect, openQRM TL,
R&D, Qlusters Inc.
[EMAIL PROTECTED]
+972-3-6081994 Fax: +972-3-6081841

http://www.openQRM.org
- Keeps your Data-Center Up and Running


-------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
Wicket-user mailing list
Wicket-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wicket-user



-------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=k&kid0709&bid&3057&dat1642
_______________________________________________
Wicket-user mailing list
Wicket-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wicket-user



--
===================================
Ittay Dror Chief architect, openQRM TL, R&D, Qlusters Inc.
[EMAIL PROTECTED]
+972-3-6081994 Fax: +972-3-6081841

http://www.openQRM.org
- Keeps your Data-Center Up and Running


-------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
Wicket-user mailing list
Wicket-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wicket-user

Reply via email to