我开发了一个grails应用程序。 在这里,我有一个页面接受数据和数据。转到列表操作,触发一个sql,将数据填充到reconciliationInstance对象中并将其显示在list.gsp中。
在我的list.gsp中,我有,
<g:sortableColumn property="access"
title="${message(code: 'reconciliationInstance.access.label', default: 'Access')}"
style="width: 10px" defaultOrder="desc"/>
但是,当我点击“金额”标题时,它会再次返回列表操作。
我在页面中有大约15列,并希望对所有列进行排序。 我在这里遗漏了什么? 为了纠正这个问题,我写了下面的代码。 重定向到操作排序。但我相信这里有些不对劲。
def sort = {
if (!params.sort) params.sort = "title"
if (!params.order) params.order = "asc"
def reconciliationInstanceList = new ArrayList<Reconciliation>()
reconciliationInstanceList=session["reconciliationInstanceList"]
order(params.sort, params.order)
[reconciliationInstanceList: reconciliationInstanceList]
}
我在会话中保存了reconciliationInstanceList。 任何建议/输入?
我的列表操作代码如下。
def list ={
//参加上一页输入的参数
def odcNum = params.odcNum
def odcDate = params.odcDate
def date = null
def reconciliationInstance = new Reconciliation()
reconciliationInstance.properties=params
//Validation if all parameters have been entered by the user
if (reconciliationInstance.validate()) {
def results
SimpleDateFormat sdfSource = new SimpleDateFormat("dd-MMM-yyyy")
if(odcDate instanceof Date) {
date = sdfSource.format(odcDate);
}else{
date = odcDate
}
//Query to be fired. I have altered this query a bit. My actual query returns around 15 parameters
String odcData="select odc_access from odc_manager where odc_date=to_char('" + date + "') and odc_num like trim('" + odcNum + "')"
def reconciliationInstanceList = new ArrayList<Reconciliation>()
Sql sql = new Sql(dataSource)
results = sql.eachRow (odcData)
{
def reconciliation = new Reconciliation()
reconciliation.setAccess it.access
reconciliationInstanceList.add reconciliation
session["reconciliationInstanceList"]=reconciliationInstanceList
}
[reconciliationInstanceList: reconciliationInstanceList]
}
else {
render(view: "search", model: [reconciliationInstance: reconciliationInstance])
}
}
BTW我是grails的新手。因此,您会在我的代码中找到一些java。 我的代码中缺少某些东西?因此排序不起作用。输入
答案 0 :(得分:1)
它应该将您带回到列表操作,但传递给操作的参数将让它知道如何对生成的模型进行排序。
行为是正确的,我假设列表操作中的代码编码不正确...如果您需要其他指导,可能需要包含该代码。
参见样本列表操作
答案 1 :(得分:1)
为此找到了解决方法。将排序顺序(params.order
)传递给sql查询,让查询进行排序。然后在gsp上显示结果。
如果还有其他方法,请告诉我。