2016-09-06 56 views
1

我使用G:sortableColumn我的表,但我得到这个错误:G:sortableColumn缺少控制器的名称(我如何可以通过控制器的名字?G:sortableColumn)

通过UrlMappingException引起:无法为映射 [/()/()?/(*)?]和参数[{sort = firstName,order = asc, action = list}]创建URL。参数[控制器]是必需的,但不是指定的 !

这是我的代码:

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

这是我的课:

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) 


    } 
} 

那么其明显的是,当我使用它在另一个GSP页面一个比它是链接到控制器,我必须通过控制器名称。问题是我不知道如何,我不确定它是否与URL映射有关。

感谢您的帮助

我的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> 

我使用PARAMS地图发送控制器并正确调用名单行动但有是一个问题:

我改名单的行动,并将其重定向到GSP页面,G:sortableColumn是,但它似乎是表的顺序不changing.This是我的代码在控制器:redirect(uri: "?sort=${params.sort}&order=${params.order}")

+0

你可以把你的GSP代码放在你使用** sortableColumn **的地方以便更好的理解。 –

+0

@ajaypanchal我更新了文章 – Navid

+2

尝试在 Vahid

回答

1

正如我理解正确的话, gsp-page不是 意见 - > medicalautomation.informationDocs.index one?

...如果要将可排序列重定向到其他控制器,则必须承担责任,为此控制器提供与列表方法相同的数据,该控制器最初显示gsp页面,并且必须在响应指定此GSP页...(因为点击排序列后,再次显示在同一页面,用列表,由列名排序)

,因此,您

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

让我困惑了一下,因为那里你直接调用了DomainClass-list方法而没有参数(其中指定了排序顺序)我认为你的排序会被丢弃,即使你设法显示它,但没有例外......?

在我要显示的依赖列表有限的情况下,我经常使用jQuery-DataTable。其中有可能排序线等内置。

和:

在我想根据显示数据的小集合的情况下,我通常使用jQuery.ajax调用来获取数据,并通过jQuery的/ JavaScript的修改HTML ...

希望我能帮上忙。

+0

是的,它不是控制器gsp。 并为解释。如你所说,点击g:sortableColumn调用控制器的列表动作 – Navid

相关问题