2012-01-20 2 views
0

태그를 사용할 때 성능 문제가 있습니다. 데이터베이스의 일부 테이블에는 수천 개의 레코드가 있으며 Grails에서 일부 필드를 편집하려고하면 테이블의 모든 레코드 드롭 다운 목록이 생성되어 실제 성능 문제가 발생하고 때때로 EndOfMemorryError가 발생합니다. 생성 된 html은 거대합니다. 목록 작성을위한 자동 완성 메소드를 구현하려고 시도했지만 결과가 만족스럽지 않습니다. 왜냐하면이 클래스가 300 Java 클래스에 대한 글로벌 솔루션이되고 자동 완성을 사용하면 각 클래스 중 하나를 지금 내 생각은 시도하고 페이지 매김을 사용하여 레코드를 표시하는 팝업 창으로 드롭 다운 목록을 변경하는 것입니다.Grails 스캐 폴딩 선택

private renderManyToOne(domainClass,property) { 
    if (property.association) { 
     def sb = new StringBuilder() 
     sb << '<g:select' 
     // id is "x" and name is "x.id" as the label will have for="x" and "." in an id will confuse CSS 
     sb << ' id="' << property.name << '"' 
     sb << ' name="' << property.name << '.id"' 
     sb << ' from="${' << property.type.name << '.list(max: 10, offset: offset)}"' 
     sb << ' optionKey="id"' 
     if (isRequired()) sb << ' required=""' 
     sb << ' value="${' << "${domainInstance}?.${property.name}" << '?.id}"' 
     sb << ' class="many-to-one"' 
     sb << renderNoSelection(property) 
     sb << '/>' 
     sb as String 
    } 
} 

어떤 아이디어가 이해할 수있을 것이다 :

+0

FWIW,이 * 힘의 * (의심 만 가능) 기존의 [제약 위젯] 수 (: 여기

는 문서의 widget.html)이 도움이 될 것입니다. 그러나 가능한 위젯 목록이 무엇인지 알지 못합니다. 나는이 질문에 현상금을 추가했다 (http://stackoverflow.com/questions/7295811/what-widget-constraints-are-for-grails-domain-classes). –

답변

0

당신은 당신의 도메인 클래스의 모든 필드를 검색하여 자동 완성에 대한 일반적인 HQL을 만들 수 있습니다 : 나는 내가 renderEditor.template이 코드를 변경해야 믿습니다 DefautlGrailsDomainClass.getPersistentProperties()를 사용합니다. 이것은 아마도 큰 데이터 세트에 대해 끔찍한 성능을 보일 것입니다 만, 충분히 유연하므로 도메인의 한 줄을 만지거나 각 도메인에 대한 특정 쿼리를 작성할 필요가 없습니다.

grails install-templates을 사용하고 스캐 폴딩에 사용되는 템플릿을 수정하십시오. grails 코드를 해킹 할 필요가 없습니다. http://grails.org/doc/2.0.x/ref/Constraints/ http://grails.org/doc/2.0.x/ref/Command%20Line/install-templates.html

+0

그가 참조한 'renderEditor.template'는 * 템플릿 중 하나입니다. –

+0

어쨌든 고맙겠습니다. 그렇게 템플릿을 수정하고 있습니다. :) –

+0

죄송합니다. – Raphael

관련 문제