我正在为表使用 g:sortableColumn ,但出现此错误:



这是我的代码:

    <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页面而不是与 Controller 链接的页面中使用它时,我必须传递 Controller 名称。问题是我不知道如何,而且我不确定它是否与网址映射有关。

谢谢你的帮助

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



我使用参数映射发送 Controller ,它正确调用了列表操作,但是存在问题:

我更改了列表操作,并将其重定向到g:sortableColumn所在的gsp页面,但是表的顺序似乎没有改变。这是我在 Controller 中的代码:redirect(uri: "?sort=${params.sort}&order=${params.order}")

最佳答案

据我正确理解,gsp页不是
View -> medicalautomation.informationDocs.index 之一?

...如果您要将sortable-column重定向到其他 Controller ,则必须承担责任,提供与此 Controller 的列表方法相同的数据,该 Controller 最初显示gsp-page并必须指定此gsp-响应中的页面...(因为单击了sortable-column后,将再次显示同一页面,并按列表名称对列表进行排序)

因此,您的

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

有点让我感到困惑,因为在那里您直接调用了DomainClass-list方法而不使用了参数(指定了排序顺序),并且我认为即使您设法无异常(exception)地显示了排序顺序,它也会被丢弃。 ..?

在要显示的依赖列表受限的情况下,我经常使用jQuery-DataTable。这有可能对内置的行等进行排序。

和:

如果我想显示少量依赖数据,通常使用jQuery.ajax调用来获取数据并通过jQuery / Javascript修改html ...

希望我能有所帮助。

关于grails - g:sortableColumn缺少 Controller 名称(如何将 Controller 名称传递给g:sortableColumn?),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39341337/

10-14 15:47
查看更多