Grails-如何在“按名称选择”中对选项进行排序?

Grails-如何在“按名称选择”中对选项进行排序?,grails,select,Grails,Select,如何在GSP文件中按名称对选项进行排序 <select name="degree" id="degree" class="required" value="${userDegree}" > <option value="">Please Select</option> <g:each in="${Degree.list()}" var="degree"> <g:if test="${degree.name == use

如何在GSP文件中按名称对选项进行排序

<select name="degree" id="degree" class="required" value="${userDegree}" >
    <option value="">Please Select</option>
    <g:each in="${Degree.list()}" var="degree">
    <g:if test="${degree.name == userDegree}">
    <option value="${degree.name}" selected="selected">${degree.name}</option>
    </g:if>
    </g:each>
</select>

请选择
${degree.name}

在我看来,您应该将列表的组成移动到controller,在那里排序,并按您希望的方式将其传递给视图,并在带有“from”的视图中使用它

对于排序本身,请查看


要包含在select look(选择外观)中,您应该移动到controller(控制器)列表的组成部分,在那里排序,并按您希望的方式将其传递给视图,并在视图中使用“from”(来自)

对于排序本身,请查看


如果您总是希望按照名称的字母顺序对学位进行排序,我建议您在域类映射中添加以下内容:

static mapping = {
    ...
    sort        name: "asc"

}

如果您总是希望按照名称的字母顺序对学位进行排序,我建议您将其放在域类映射中:

static mapping = {
    ...
    sort        name: "asc"

}

是的,您可以获取
Degree
对象列表,并在视图中对其进行排序,但不建议将视图与数据库逻辑混合使用。


如果以后你想过滤掉无效度数列表,你会怎么做?在视图上添加逻辑?那会很混乱

所以我建议你这样做,在你的控制器上获取学位列表(让这个控制器调用另一个服务来给你提供学位列表更好),然后将它们传递到UI

degrees = Degree.list(sort:"name", order:"asc")
然后将其传递到模型映射中的视图

您的geach将如下所示:

<g:each in="${degrees.list()}" var="degree">



使用grails进行编码时,请访问Burt Beckwith这是一个非常重要的话题。

是的,您可以获取
对象的列表,并在视图中对其进行排序,但不建议将视图与db逻辑混合使用。


如果以后你想过滤掉无效度数列表,你会怎么做?在视图上添加逻辑?那会很混乱

所以我建议你这样做,在你的控制器上获取学位列表(让这个控制器调用另一个服务来给你提供学位列表更好),然后将它们传递到UI

degrees = Degree.list(sort:"name", order:"asc")
然后将其传递到模型映射中的视图

您的geach将如下所示:

<g:each in="${degrees.list()}" var="degree">



请在使用grails编写代码时访问,作者是Burt Beckwith这是一个非常重要的话题。

您可以将列表顺序放在选择标记处,如下所示:

<select name="degree" id="degree" class="required" from="{$Degree.list('sort':name, order: 'asc')}" value="${userDegree}" >
...
...
</select>

...
...

您可以将列表顺序放在选择标记处,如下所示:

<select name="degree" id="degree" class="required" from="{$Degree.list('sort':name, order: 'asc')}" value="${userDegree}" >
...
...
</select>

...
...

@esauro-还有更简单的解决方案。是的,它更简单,但与MVC层不一致,因为您将在视图中完成应该在控制器(或服务)中完成的事情@esauro-有更简单的解决方案。是的,它更简单,但与MVC层不一致,因为您将在视图中执行应该在控制器(或服务)中执行的操作