2016-09-06 4 views
1

J'utilise g: sortableColumn pour ma table mais je reçois cette erreur:g: sortableColumn manquant nom du contrôleur (Comment puis-je passer le nom du contrôleur à g: sortableColumn)

Causé par UrlMappingException: Impossible de créer l'URL pour le mappage [/ ()/()?/(*)?] Et les paramètres [{sort = firstName, order = asc, action = liste}]. Le paramètre [controller] est requis, mais pas spécifié!

Ceci est mon code:

<g:sortableColumn property="firstName" title="FirstName"/> 

Et voici ma classe:

package medicalautomation 

class InformationDocs { 

    String firstName 
    String lastName 
    String idNum 
    String sex 
    String bloodType 
    Date birthDay 
    String job 
    String backGround 
    Double weight 
    Double height 
    Double bloodPressure 
    Double bloogSugar 
    String phoneNum 
    String address 
    String description 


    static constraints = { 
     firstName() 
     lastName() 
     idNum() 
     sex() 
     bloodType() 
     birthDay() 
     job() 
     backGround(maxSize:5000) 
     weight(nullable: true) 
     height(nullable: true) 
     bloodPressure(nullable: true) 
     bloogSugar(nullable: true) 
     phoneNum(maxSize: 20) 
     address(maxSize: 200) 
     description(maxSize: 5000) 


    } 
} 

bien son évident que quand je l'utilise dans une autre page SPG que celui dans lequel il est lié au contrôleur, je dois passer le nom du contrôleur.Le problème est que je ne sais pas comment, et je ne suis pas sûr si cela a quelque chose à voir avec le mappage d'URL.

Merci pour votre aide

Mon code GSP:

<!doctype html> 
<html> 
<head> 
<meta name="layout" content="main"/> 
<g:javascript library="jquery" plugin="jquery" /> 
<title>Welcome to Grails</title> 
</head> 
<body> 
<div class="topnav"> 
    <p style="color: white">Top Nav</p> 
</div> 
<div class="sidenav"> 
<div class="sidenavcontent" > 
    <h1>HELLO!!!</h1> 
    <ul> 
    <g:each var="c" in="${grailsApplication.controllerClasses.sort { it.fullName } }"> 
    <li><g:link controller="${c.logicalPropertyName}">${c.fullName}</g:link></li> 
    </g:each> 
    </ul> 
<table> 
    <tr> 
    <g:sortableColumn property="firstName" title="FirstName"/> 
    <g:sortableColumn property="lastName" title="LastName"/> 
    <g:sortableColumn property="idNum" title="ID Number"/> 
    </tr> 
    <g:each in="${medicalautomation.InformationDocs.list()}" var="info"> 
    <tr> 
    <td><g:remoteLink id="${info.id}" controller="informationDocs" action="show" update="showdetails">${info.firstName}</g:remoteLink></td> 
    <td>${info.lastName}</td> 
    <td>${info.idNum}</td> 
    </tr> 
    </g:each> 
    </table> 
</div> 
</div> 
<div class="bodycont"> 
<div id="showdetails"></div> 
</div> 

j'envoie le contrôleur en utilisant params carte et il appelle correctement l'action liste mais est un problème:

j'ai changé l'action de la liste et il redirige vers la page gsp que g: sortableColumn est, mais il semble que l'ordre de la table n'est pas changing.This mon code dans le contrôleur: redirect(uri: "?sort=${params.sort}&order=${params.order}")

+0

pouvez-vous s'il vous plaît mettre votre code GSP où vous utilisez ce ** sortableColumn ** pour une meilleure compréhension. –

+0

@ajaypanchal J'ai mis à jour l'article – Navid

+2

essayez d'ajouter params = "$ {params}" à la balise Vahid

Répondre

1

Comme je vous comprends bien, la page gsp n'est pas la vues -> medicalautomation.informationDocs.index one? Si vous souhaitez rediriger la colonne triable vers un autre contrôleur, vous devez prendre la responsabilité de fournir les mêmes données que la méthode de liste pour ce contrôleur qui affiche initialement la page gsp et doit préciser cette gsp page dans la réponse ... (car après avoir cliqué sur l'triables colonne, la même page est à nouveau affichée, avec la liste, triées par colonne nom)

et, par conséquent, votre

<g:each in="${medicalautomation.InformationDocs.list()}" var="info"> 

me confond un peu, car là vous appelez la méthode DomainClass-list directement sans les params (où l'ordre de tri est spécifié) et je pense que votre ordre de tri serait défaussé, même si vous l'avez réussi à l'afficher sans exception ...?

Dans les cas où la liste dépendante que je souhaite afficher est limitée, j'utilise souvent jQuery-DataTable. Qui a la possibilité de trier les lignes, etc.

Et:

Dans les cas où je veux afficher une petite collection de données en fonction, je l'habitude d'utiliser un appel jQuery.ajax pour obtenir les données et modifier le code html par jQuery/Javascript ...

J'espère que je pourrais aider un peu.

+0

Oui c'est pas les contrôleurs gsp. Et pour l'explication. Comme vous l'avez mentionné en cliquant sur g: sortableColumn appelle l'action de liste du contrôleur – Navid