Looking for some more suggestions :), I would prefer not to use ajax since
it is quite a simple page.
I have tried some more (hacky) stuff which didn't work either :( :
The below changed the location URL, but don't load the page?? Any ideas.
public static void programmaticForward2( final String viewId ) throws
IOException{
FacesContext faces = FacesContext.getCurrentInstance();
HttpServletResponse response = (HttpServletResponse)
faces.getExternalContext().getResponse();
response.setContentType("text/html");
response.setHeader("Location", "http://localhost:8080/dss" +viewId);
faces.responseComplete();
response.getOutputStream().flush();
response.getOutputStream().close();
}
The below didn't do anything?
public static void programmaticForward3( final String viewId ) throws
IOException{
FacesContext faces = FacesContext.getCurrentInstance();
HttpServletResponse response = (HttpServletResponse)
faces.getExternalContext().getResponse();
HttpServletRequest request =
(HttpServletRequest)faces.getExternalContext().getRequest();
PrintWriter out = response.getWriter();
response.setContentType("text/html");
response.sendRedirect("http://" +request.getServerName() +":"
+request.getServerPort() +"/dss" +viewId);
faces.responseComplete();
out.flush();
out.close();
}
Cheers,
Mike no.2
On 07/02/07, Mike Kienenberger <[EMAIL PROTECTED]> wrote:
Here's an ajax solution for a progress bar:
http://weblogs.java.net/blog/edburns/archive/2005/05/ajaxian_faces_p.html
https://blueprints.dev.java.net/bpcatalog/ee5/ajax/usingAJAXwithoutJSF.html
Seems like there should be a way to solve this without ajax, though.
Maybe using a meta refresh.
On 2/7/07, Mikael Andersson <[EMAIL PROTECTED]> wrote:
> Hi,
> I have an action which performs a length operation, I'd like to get the
> browser to redisplay the page while the process keeps running on the
server.
>
> I wonder how I perform a programmatic forward which in an action method,
> which causes the browser to re-render the page while the action method
is
> still running.
>
> Is there a way of doing this without spawning a new Thread?
>
> I made the following futile attempt :
>
> Managed bean:
>
> public String longishRunningAction(){
>
> try{
> NavigationUtil.programmaticForward
> ("/report/index.xhtml");
> }
> catch(Exception e){}
>
> doLongishRunningOperation();
>
> return null;
> }
>
>
> Some of the stuff in here were added just to see if the made a
difference,
> they didn't :)
>
> public class NavigationUtil {
>
> /**
> * Force a forward programmatically
> *
> * @param viewId the viewId to forward to, ex. /report/index.xhtml
> * @throws ServletException
> * @throws IOException
> */
> public static void programmaticForward( final String viewId ) throws
> ServletException, IOException{
>
> ExternalContext eCtx =
> FacesContext.getCurrentInstance().getExternalContext();
> HttpServletRequest request =
> (HttpServletRequest)eCtx.getRequest();
> HttpServletResponse response =
> (HttpServletResponse)eCtx.getResponse();
> RequestDispatcher dispatcher = request.getRequestDispatcher(
viewId
> );
>
> dispatcher.forward(request,response);
>
> FacesContext.getCurrentInstance().responseComplete();
>
> response.getOutputStream().flush();
> response.getOutputStream().close();
>
> }
>
> }
>
>