2010-02-11 4 views
1

Fondamentalement, je veux ajouter un # à la fin de la clé d'exécution de fluxDans Spring Web Flow, comment ajouter # à la fin de flowExecutionKey pour rediriger vers une ancre dans une page?

par exemple. _flowExecutionKey=_c8CEAE6.....E1095#

de sorte que lorsque la page affiche, il affiche à la balise d'ancrage

J'ai une page qui est construit dynamiquement par l'utilisateur.

L'utilisateur peut choisir d'ajouter des champs supplémentaires à la page pour entrer plus de données.

Les champs sont un objet qui est stocké dans une liste.

La page boucle sur tous les objets de la liste et les affiche.

J'ai configuré un flux d'actions qui ajoute un autre objet à la liste, puis affiche à nouveau la page qui provoque l'apparition des nouveaux champs.

Le problème est que lorsque la page se charge à nouveau, elle est toujours en haut et non là où le nouveau champ a été ajouté. Je peux ajouter une ancre à l'endroit où les nouveaux champs sont générés mais je ne sais pas s'il est possible d'ajouter un # à la fin de la clé d'exécution du flux

Répondre

3

Un peu de longhot, mais je pense que la solution pour cela est probablement par une combinaison d'étapes, et non pas tant par des mécanismes web débit ressort

  • définir l'index du dernier objet modifié dans viewScope
  • dans vos jsp de, mettre les points d'ancrage locaux, disons object0 à object20
  • avoir un peu de javascript, cela 'onload' change l'emplacement à l'ancre droite:

    corps

    onload = "location.href = location.href + '# object8'"

Cela vous amène à la 8e élément, sans frapper à nouveau le serveur.

+0

En utilisant la méthode ci-dessus, j'ai pu résoudre mon problème, merci! –

+1

sympa :) donc je pense que tu devrais marquer ta question comme 'répondue' –

0

Si vous utilisez des formulaires, il existe une meilleure solution que de travailler avec javascript.

Vous pouvez utiliser des ancres comme ceci:

<form action="${flowExecutionUrl}#position" method="POST" commandName="yourForm"> 

En combinaison avec la fixation d'un attribut dans le flux de travail:

<transition on="save" to="yourViewState" > 
     <set name="flowScope.isSaved" value="true" /> 
    </transition> 

En plus dans votre jsp:

<c:if test="${isSaved}"> 
    <a id="position"></a> 
    Your thingy is saved. 
</c:if> 

Donc, si vous soumettez votre action d'enregistrement, l'écran sautera automatiquement au message "votre chose est sauvé".

Questions connexes