我已经将控制器中的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代码。