2017-12-19 34 views
1

"(list-projects)"메서드는 SQLite 데이터베이스에서 맵을 쿼리합니다.Clojure/seeseaw.core/table lazy-seq 검색 실패

(doall (apply prn (pm.models.db/list-projects)))  

pm.core==>{:id 1, :name "MyTestProj", :owner "mbc", :date "2017-12-19 13:12:45"} {:id 2, :name "newproject1", :owner "mbc", :date "2017-12-19 13:12:45"} {:id 3, :name "newproject1", :owner "mbc", :date "2017-12-19 13:12:45"} {:id 4, :name "abc", :owner "def", :date "2017-12-19 13:12:45"} {:id 5, :name "abc", :owner "def", :date "2017-12-19 13:12:45"} {:id 6, :name "abc", :owner "def", :date "2017-12-19 13:12:45"} {:id 7, :name "newproject1", :owner "mbc", :date "2017-12-19 13:12:45"} {:id 8, :name "", :owner "", :date strong text"2017-12-19 13:12:45"} 

내가 사용하는 결과와 seesaw.core/테이블 (자바 JTable의)를 채우는 싶습니다 : 나는 seesaw.core/프레임/미그 패널/테이블 (JFrame의/인 JPanel를 구성 할 때 행 속성을/JTable).

(def main-panel 
    (mig-panel 
    :constraints ["fill, ins 0"] 
    :items [[(seesaw.core/table 
        :id :tbl1 
        :size [640 :by 480] 
        :model [:columns [:id :name :owner :date] 
          :rows [(doall (apply prn (pm.models.db/list-projects)))] 
         ]) "grow"] 
     ])) 

2. Unhandled clojure.lang.Compiler$CompilerException 
    Error compiling form-init4108264894568019320.clj at (44:16) 
    ang.Thread/run 

1. Caused by java.lang.IllegalArgumentException 
    row must be a map or vector, got null 

내가지도를 삽입하면 {: ID 1 : 이름 "MyTestProj": 소유자 "MBC", : 날짜를 "2017년 12월 19일 13시 12분 45초"} {: ID ... .....} {} {} {} {} {} 직접, 잘 작동, 테이블의 행이 제대로 채워집니다, 그래서 출력의 형식 (doall (apply prn (pm.models.db/list-projects))))이 필요합니다.

어떻게하면 seesaw.core/mig-panel의 컨텍스트에서 (내가 가정 한) lazy-seq를 검색 할 수 있습니까? 감사 모티머

+0

'doall '은 필요하지 않습니다. 패널은 목록을 사용하여 목록을 작성해야합니다 (여기서는 문제가 아님). – Carcigenicate

+0

그리고'(행을리스트로 평가하기 위해 prn을 적용해라.) 기대하면 벡터에': rows'가 싸여 있으면 안됩니다. 그 에러를 일으킬 것이라고는 기대하지 않지만, (pm.models.db/list-projects)). – Carcigenicate

+1

힌트를 주셔서 감사합니다. 해결책은 : rows (pm.models.db/list-projects) mig- 패널에는 벡터 또는지도가 필요합니다. 직접 쿼리 한 벡터를 사용할 수 있습니다. –

답변

1
pm.core> (pm.models.db/list-projects) 
({:id 1, :name "MyTestProj", :owner "mbc", :date "2017-12-19 13:12:45"} {:id 2, :name "newproject1", :owner "mbc", :date "2017-12-19 13:12:45"} {:id 3, :name "newproject1", :owner "mbc", :date "2017-12-19 13:12:45"} {:id 4, :name "abc", :owner "def", :date "2017-12-19 13:12:45"} {:id 5, :name "abc", :owner "def", :date "2017-12-19 13:12:45"}) 
pm.core> 

(pm.models.db /리스트 프로젝트)에 대한 값으로 직접 사용될 수있는리스트의 결과 로우 키 (괄호없이). : 행 (pm.models.db/list-projects)

제안 사항은 Carcigenicate에게 감사드립니다.