【问题标题】:No such property: propertyId for class: grails.converters.JSON没有这样的属性:类的 propertyId:grails.converters.JSON
【发布时间】:2014-05-15 10:49:16
【问题描述】:

我有一个像这样的 grails 控制器动作.....

控制器:Home.groovy

def search(){

        def pl=Long.valueOf(params.pl).longValue(); println pl 

        def mil=Long.valueOf(params.mil).longValue(); println mil
        def mal=Long.valueOf(params.mal).longValue(); println mal

        def mic=Long.valueOf(params.mic).longValue(); println mic

        def mac=Long.valueOf(params.mac).longValue(); println mac


        def mib=Long.valueOf(params.mib).longValue(); println mib
        def mab=Long.valueOf(params.mab).longValue(); println mab


        Type pt=Type.valueOf(params.pt); println pt

            def results=Project.executeQuery("""
              select new map (prt.name as name,pp.id as propertyId,pp.constructedSize as constructedSize,
                 prt.propertyLocation.name as location,pp.mrp as mrp,pp.landSize as landSize,
                    pp.propertyType.name as propertyType)
                      from Project prt
                         JOIN prt.projectProperties pp where 
                           pp.propertyType.name=:pt and
                              pp.constructedSize between :mic and :mac and
                                pp.landSize between :mil and :mal and
                                   pp.mrp between :mib and :mab and
                                      prt.propertyLocation.id=:pl       
                        """,[mic:mic,mac:mac,mil:mil,mal:mal,mib:mib,mab:mab,pl:pl,pt:pt])
        println results

        def customerInstance=new Customer()
        render (view:'search',model:[results:results as JSON,customerInstance:customerInstance])
    }

并且从这个动作渲染的视图只在下面给出了错误的部分......

查看:Search.gsp

<table style="width: 50%;">
        <g:each in="${results}" var="item">
            <tr>
                <td><div class="box shadow-outside-all" >
                   <input type="checkbox" name="getInterest" id="getInterest"
                    value="${item.propertyId}" style="float: left;" /> 
                    <b> ${item.name?.encodeAsHTML()}</b></br>
                    Property Type: ${item.propertyType?.encodeAsHTML()}</br> 
                    Constructed Size:${item.constructedSize?.encodeAsHTML()}</br> 
                    Land Size: ${item.landSize?.encodeAsHTML()}</br>
                    MRP: ${item.mrp?.encodeAsHTML()}</br> 
                    Location: ${item.location?.encodeAsHTML()}</br>
                   </div>
                </td>
            </tr>
        </g:each>
        <br />

    </table>

错误是……

错误

No such property: propertyId for class: grails.converters.JSON. Stacktrace follows:
org.codehaus.groovy.grails.web.pages.exceptions.GroovyPagesException: Error evaluating expression [item.propertyId] on line [144]: No such property: propertyId for class: grails.converters.JSON
    at E__Yogesh_development_work_client_okruti_propertyHub_grails_app_views_home_search_gsp$_run_closure2.doCall(search.gsp:144)
    at E__Yogesh_development_work_client_okruti_propertyHub_grails_app_views_home_search_gsp.run(search.gsp:216)
    at grails.plugin.cache.web.filter.PageFragmentCachingFilter.doFilter(PageFragmentCachingFilter.java:200)
    at grails.plugin.cache.web.filter.AbstractFilter.doFilter(AbstractFilter.java:63)
    at grails.plugin.springsecurity.web.filter.GrailsAnonymousAuthenticationFilter.doFilter(GrailsAnonymousAuthenticationFilter.java:53)
    at grails.plugin.springsecurity.web.authentication.RequestHolderAuthenticationFilter.doFilter(RequestHolderAuthenticationFilter.java:49)
    at grails.plugin.springsecurity.web.authentication.logout.MutableLogoutFilter.doFilter(MutableLogoutFilter.java:82)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:724)
Caused by: groovy.lang.MissingPropertyException: No such property: propertyId for class: grails.converters.JSON
    at E__Yogesh_development_work_client_okruti_propertyHub_grails_app_views_home_search_gsp$_run_closure2_closure21.doCall(search.gsp:144)
    ... 10 more

任何帮助将不胜感激.....

【问题讨论】:

  • 你为什么要把你的结果渲染成这样的 JSON?不要将它们呈现为 JSON。您的 GSP 需要的是地图/模型而不是 JSON 结果。
  • 谢谢@JoshuaMoore 你的想法成功了
  • 为什么@Dónal 我知道这可能是一个愚蠢的问题,但我是初学者,所以很抱歉

标签: javascript json grails


【解决方案1】:

您为什么将结果呈现为这样的 JSON?不要将它们呈现为 JSON。您的 GSP 需要的是地图/模型,而不是 JSON 结果。

从你的控制器中渲染你的结果,而不是这样:

render(view:'search', model:[
  results:results,
  customerInstance:customerInstance
])

【讨论】:

    猜你喜欢
    • 2016-08-28
    • 1970-01-01
    • 1970-01-01
    • 2014-07-14
    • 1970-01-01
    • 1970-01-01
    • 2014-01-11
    • 2013-01-16
    • 1970-01-01
    相关资源
    最近更新 更多