Bonjour,
Alors voici mon problème je travaille sur une application en jsf 1.1 et sur une page je dispose notamment d'une selectOneMenu (une liste déroulante quoi) qui fait un submit de la page sur chaque événement onChange. Mais malheureusement cette liste est située en bas de page et lors du submit je me retrouve automatiquement en haut de page ce qui est plutôt pas très ergonomique... Je me suis donc tourné vers le javascript en utilisant un champ caché prenant la valeur de l'ancre ou je veut aller (car évidement j'ai plusieurs listes dans cette page qui chacunes vont à un endroit différent de la page) et une fonction sur l'événement onLoad de la page qui doit me positionner sur l'ancre voulue.
Sachant que ces listes sont placées dans une dataTable elles même dans une subview qui est dans un form... enfin bref tout cela est bien enterré au fin fond de la page ^^
La liste :
Les champs cachés :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 <h:selectOneMenu id="somTeleTransmission" value="#{specTiers.teletransmission}" onchange="listeMutuelleSpecifique()" rendered="#{partenaireBackBean.currentSpecifiqueTiersCommune.forOrganismePrevadies}"> <f:converter converterId="TeletransmissionConverter" /> <t:selectItems value="#{partenaireBackBean.teletransmissionList}" var="teletrans" itemLabel="#{teletrans.libelle}" itemValue="#{teletrans}"/> </h:selectOneMenu>
Le code javaScript :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 <hinputHidden name="mutuelleSpecifique"/> <h:inputHidden id="choixAncre" value="mutuelleSpecifique"/>
J'ai deux problèmes la dessus, premièrement je n'arrive pas à conserver la valeur du champ choixAncre lors du submit de la page... j'ai bien essayé d'utiliser un saveState en bindant ce champ sur une valeur de mon backBean jsf mais étant donné que je change sa valeur via javascript je doute de l'efficacité de la méthode... De plus je doit avoir une erreur de syntaxe pour atteindre l'ancre car après avoir essayé en forcant la valeur de l'ancre à ce que je veut (et l'avoir vérifié via des alert) je ne me retrouve quand même pas sur l'ancre au chargement....
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 function listeMutuelleSpecifique(){ document.getElementById("partenaireEditForm:frmEditGlobal:partenaireEditSpecifiqueForm:blocSpecifiqueCommuneMutuelle:choixAncre").value="mutuelleSpecifique"; document.forms[0].submit(); } function atteindreAncre(){ var ancre=document.getElementById("partenaireEditForm:frmEditGlobal:partenaireEditSpecifiqueForm:blocSpecifiqueCommuneMutuelle:choixAncre").value; if(ancre=="mutuelleSpecifique"){ window.location.hash="#mutuelleSpecifique"; } }
Voila donc si quelqu'un à une idée d'ou viennent mes problèmes et surtout de comment les résoudre il gagnera ma reconnaissance (non pas de bière ^^).
Merci a tous d'avance!!
Partager