2008-10-29 7 views
4

J'utilise JSF frontend pour une page où une image est téléchargée ou supprimée. Un clic sur le bouton de téléchargement ou de suppression entraîne une publication et la recharge de la page avec l'état mis à jour. Cependant, cela réinitialise la position de défilement de la page. Comment devrais-je continuer à conserver le scrollback de cette page sur les actions de publication.Comment puis-je maintenir la position de défilement entre les publications dans JSF?

Répondre

0

Si vous utilisez Apache MyFaces Tomahawk, vous pouvez définir le paramètre AUTOSCROLL puis vérifier que AutoScrollPhaseListener est activé.

Je ne suis pas sûr que cette fonctionnalité est spécifiée par JSF, mais plutôt quelque chose de plus mis en œuvre par Apache MyFaces Tomahawk. En outre, sachez qu'avant la version 1.1.6, il existe une vulnérabilité de script intersite dans l'implémentation d'AUTOSCROLL.

1

Vous pouvez le faire avec un actionListener. Par exemple, dans votre page (page.jsf par exemple):

<f:view>  
    <h:form> 
     <h:commandLink actionListener="#{bean.method}"> 
      <h:outputText value="Submit" /> 
      <f:param name="anchor" value="image" /> 
     </h:commandLink> 
    </h:form> 
    <div id='result'> 
     <h1><a name='image'>Image</a></h1>   
    </div> 
</f:view> 

Et le bean géré ressemble:

public class Bean { 

    public void method(ActionEvent actionEvent) { 

     // Get parameter 
     String ancla = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("anchor"); 

     try { 
      FacesContext.getCurrentInstance().getExternalContext().redirect("page.jsf#" + anchor); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 

} 

Hope this helps

0

vous pouvez utiliser jquery .. Utilisation des cookies .. en fonction prêt

$(function(){ 

      //set window scroll position if cookie is set 
     window.scroll(0,getCookie('myCookie')); 
     //unset cookie after setting scroll position 
     deleteCookie('myCookie'); 

     //make this class objects keep page scroll position 
     jQuery(window).unload(function() { 
     setCookie('myCookie', getPageScroll()); 
     }); 
     //------------------- 



    }); 

après fonction prêt ajouter cette fonction ..

function setCookie(name,value) { 

    var date = new Date(); 
    date.setTime(date.getTime()+(10*1000)); 
    var expires = "; expires="+date.toGMTString(); 
    document.cookie = name+"="+value+expires+"; path=/"; 
} 

function getCookie(name) { 
    var nameEQ = name + "="; 
    var ca = document.cookie.split(';'); 
    for(var i=0;i < ca.length;i++) { 
     var c = ca[i]; 
     while (c.charAt(0)==' ') c = c.substring(1,c.length); 
     if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); 
    } 
    return null; 
} 

function deleteCookie(name) { 
    setCookie(name,"",-1); 
} 

je souhaite que cela vous aide ..