如何将Arraylist从gsp页面传递到grails中的控制器操作

时间:2013-07-23 16:52:35

标签: grails arraylist

我已经将控制器中的arraylist值传递给gsp页面,在那里我可以使用键名来访问arraylist的数据。在那个gsp页面中,我在我的gsp页面中添加了以下链接,如

<g:link controller="searchFun" action="seeMore" id="" params="[q:params.q,cat:params.cat,stat:'study',ids1:'sm']">See More</g:link>

当我访问其他seemore.gsp中的相同参数时,我无法使用像"${fieldValue(bean: result, field: "purpose")"这样的键名来访问这些值,它会引发异常"No Such property is available for Java.lang.String"但我可以使用相同的代码在index.gsp中,上面的代码可以使用。

我的问题是如何将变量原样传递给另一个动作?

这是我的控制器和动作

*class SearchFunController {
def searchableService
def index() {
def Study
def map1=new ArrayList()
def tmpStudy=Study1.search(query,[max:500])
Study=tmpStudy.results
Study.id.each{
def c=Study1.findAllById(it.value)
if(c!=null&&c.size()>0){
c.each{
def sui=it.uniqueIdentifier                                                     
def sur=StudyUserRole.findAllByStudyUIAndUserName(sui,session.user)
if(sur!=null&&sur.size()>0){
sur.each {
def stu=Study1.findAllByUniqueIdentifier(it.studyUI)
def loSui=it.id
stu.each{
if(map1==null&&map1.size()==0)
map1.add(it)
else if(!map1.containsAll(it)){
println "Added here 2"
map1.add(it)
println map1
 return [study:map1.unique()]
}}}}}}}}
def seeMore()
{
return [s:params.s]
}*

index.gsp中

*<tbody>
<g:each var="result" in="${s}" status="index">
<g:if test="${index<5}">
<tr style="max-height:10px;overflow:hidden;">
<td> ${index+1} </td>
<g:if test="${fieldValue(bean: result, field: "uniqueIdentifier")!=null}">
<td><g:link controller="searchFun" action="view" id="${fieldValue(bean: result, field: "uniqueIdentifier").replaceAll("\\[", "").replaceAll("\\]", "")}" params="[q:params.q,cat:params.cat]">${fieldValue(bean: result, field: "uniqueIdentifier").replaceAll("\\[", "").replaceAll("\\]", "")}</g:link></td>
</g:if>
<g:else>
<td>--</td>
</g:else>
<g:if test="${fieldValue(bean: result, field: "name")!=null}">
<td style="width:40%; height:2px; overflow:hidden;">${fieldValue(bean: result, field: "name").replaceAll("\\[", "").replaceAll("\\]", "")}</td>
</g:if>
<g:else>
<td>--</td>
</g:else>                       
<g:if test="${fieldValue(bean: result, field: "protocolType").equalsIgnoreCase("[null]")}">
                                            <td>--</td>
                                        </g:if>
                                        <g:else>
                                            <td><g:set var="dc" value="${fieldValue(bean: result, field: "protocolType").replaceAll("\\[", "").replaceAll("\\]", "").split(" ")}"></g:set>
                                            ${dc[0].capitalize()}
                                            </td>
                                        </g:else>
                                        <g:if test="${fieldValue(bean: result, field: "purpose").equalsIgnoreCase("[null]")}">
                                            <td>--</td>
                                        </g:if>
                                        <g:else>
                                            <td><g:set var="dc1" value="${fieldValue(bean: result, field: "purpose").replaceAll("\\[", "").replaceAll("\\]", "").split(" ")}"></g:set>
                                            ${dc1[0].capitalize()}
                                            </td>
                                        </g:else>
                                        <g:if test="${fieldValue(bean: result, field: "statusId").equalsIgnoreCase("[null]")}">
                                            <td>--</td>
                                        </g:if>
                                        <g:elseif test="${fieldValue(bean: result, field: "statusId").equalsIgnoreCase("[1]")|| fieldValue(bean: result, field: "statusId").equalsIgnoreCase("1")}">                    
                                            <td><span class="label label-success">Available</span></td>
                                        </g:elseif>
                                        <g:else>
                                            <td>${fieldValue(bean: result, field: "statusId").replaceAll("\\[", "").replaceAll("\\]", "")}</td>
                                        </g:else>
                                    </tr>
                                </g:if>
                            </g:each>
                        </tbody>
    </table>   
  </div>
  <div class="span12">
    <g:link controller="searchFun" action="seeMore" id="" params="[s:s]">See More</g:link>
  </div>*

在索引.gsp中,它可以工作,我可以看到数据,但是当我在seeMore.gsp中使用seemore链接时,它会抛出一个错误。我在seeMore.gsp中也使用了相同的gsp代码。

0 个答案:

没有答案