Question

Lorsque vous utilisez displaytag l'URL elle génère pour la pagination et le tri est trop long pour IE.

Yat-il un moyen de contourner cela sans avoir recours à la pagination externe et le tri?

Vive.

Était-ce utile?

La solution

Espérons que cela vous aidera quelqu'un. Et s'il y a une autre façon, alors laissez-moi savoir.

La façon dont je l'ai contourné c'est en excluant tous les paramètres sur l'étiquette de table d'affichage.

<display:table excludedParams="*"> ... </display:table>

Ce qui signifie que l'URL ne remplit pas avec les paramètres.

Grand, mais comment gardez-vous une poignée sur la liste des objets que nous utilisons?

Je l'ai fait en définissant un attribut sur la demande du contexte. Et comme j'utilise le cadre Stripes Je l'ai fait en utilisant le ActionBeanContext.

public class SchemeActionBeanContext extends ActionBeanContext {
    public void setThings(List<Things> things) {    
        getRequest().getSession().setAttribute("stuff", things);
    }

    public List<Things> getThings() {
        return (List<Things>)getRequest().getSession().getAttribute("stuff");
    }

Et vous pouvez définir et de les faire tout au long du cycle de vie si la page / demande.

Autres conseils

Je faisais face à un problème similaire où url avec tous les champs du formulaire obtenions ajouté à url pendant le tri et la pagination. Cela a été résolu en identifiant tous les liens mentionnés ci-dessous paginations soit par le titre unique qu'il forme (Aller à la page) et les htmls internes tels que « Suivant » « Précédent » etc il forme.

Les params javascript dans la méthode ci-dessous sont expliquées ici 1) head1 / head2 - noms de colonnes de tri transmis. 2) formName - nom du formulaire, 3) MasterName - la méthode appelée dans votre contrôleur

J'ai une logique sur une zone de saisie du nom « strNamesearch » sur la base duquel mon appel changements de méthode.

Notez également, une fois que vous faites cela, ne pas oublier d'ajouter excludedParams = « * » dans l'affichage: balise table

Voici le code:

function findAnchorGen(head1,head2,formName,masterName) {
    var formObj = eval("document."+formName);
    var methodName;
    var strSearch = trim(formObj.strNamesearch.value);
    if(strSearch == null || strSearch == '') {
        methodNameP = "fetch"+masterName;
    } else {
        methodNameP = "search"+masterName;
    }
    var anchors = document.links; // your anchor collection   
    var i = anchors.length; 
    while (i--) {
        var a = anchors[i];     
        var aRef = a.href;
        var aTitle = a.title;
        index = aTitle.indexOf("Go to page");
        var inHtml = a.innerHTML;

        if(index >= 0 || inHtml == 'Last' || inHtml == 'Next' || inHtml == 'First' || inHtml == 'Prev' || inHtml == head1 || inHtml == head2) {
            //alert("Ref = " + aRef + " | title = " + aTitle + " | inner html = " + a.innerHTML);
            a.href="#";
            a.onclick = (function(aRef,formName,methodNameP){return function(){fSubmit(aRef,formName,methodNameP);}})(aRef,formName,methodNameP);
        }
    } 
}

function fSubmitGen(aRef,formName,methodNameP) {
    var formObj = eval("document."+formName);
    formObj.action = aRef;
    formObj.method.value = methodNameP;
    formObj.submit();
}

Ceci est une solution de contournement et fonctionne bien pour nous. J'espère que cela fonctionne pour vous aussi.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top