This is not strictly just a myfaces question but perhaps someone can help me 
still... :)

I finally thought I woulf see if I could fix the problem of just no response 
when trying to use ajax calls when the session has timed out and I am almost 
there...
I am using Primefaces 5.1, Spring 4.1.4 and Spring Security 3.2.5 deployed in 
Tomcat 8 and I have solved this using the following..:


<beans:bean id="authenticationEntryPoint"
                
class="no.havleik.weather.spring.JsfLoginUrlAuthenticationEntryPoint" 
p:loginFormUrl="/login.xhtml"
                p:redirectStrategy-ref="redirectStrategy" />

    <beans:bean id="redirectStrategy" 
class="no.havleik.weather.spring.JsfRedirectStrategy" />

    <http auto-config="true" use-expressions="true" 
entry-point-ref="authenticationEntryPoint">
     ........



returning the following xml when expired:

.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>")
                .append("<partial-response><redirect url=\"")
                .append(redirectUrl)
                .append("\"></redirect></partial-response>").toString();



And this works, as when I try to do an ajax call after session timeout, I am 
redirected to the login.xhtml page.
But what is strange, is that after I login I show my index.xhtml page which 
works fine the first time (just after I login after expired). But if move
away from this view and then go back to index.xhtml, I get a 
ViewExpiredException. I have tried to solve this by adding my custom 
exceptionhandler
where I mainly do this when the ViewExpiredException occurs..:


facesContext.setViewRoot(facesContext.getApplication().getViewHandler().createView(facesContext,
 viewExpiredException.getViewId() +
"?faces-redirect=true"));
facesContext.renderResponse();



The problem is that the view that is created shows an XML like this:

<partial-response id="j_id1"><changes><update id="mainform:growl"><span 
id="mainform:growl"></span><script id="mainform:growl_s"
type="text/javascript">$(function(){PrimeFaces.cw('Growl','widget_mainform_growl',{id:'mainform:growl',sticky:false,life:6000,escape:true,msgs:[]});});</script></update><update
id="mainform:weatherTable"><tr data-ri="20" data-rk="11.12.2014" 
class="ui-widget-content ui-datatable-even ui-datatable-selectable" role="row"
aria-selected="false"><td role="gridcell">11.12.2014</td><td 
role="gridcell">1,6 
...........

</update><update 
id="j_id1:javax.faces.ViewState:0">-5276350923272627949:7555540505775029876</update><extension
 ln="primefaces"
type="args">{"totalRecords":20280}</extension></changes></partial-response>



instead of the html page. Refreshing the page displays the page as it should..


So, 2 questions:

- How can I display the correct html view instead xml?
- And why am I getting ViewExpiredException the second time I display the view 
instead of the first time after session timeout?



Regards,

BTJ

-- 
-----------------------------------------------------------------------------------------------
Bjørn T Johansen

[email protected]
-----------------------------------------------------------------------------------------------
Someone wrote:
"I understand that if you play a Windows CD backwards you hear strange Satanic 
messages"
To which someone replied:
"It's even worse than that; play it forwards and it installs Windows"
-----------------------------------------------------------------------------------------------

Reply via email to