2016-08-07 42 views
1

我使用的是grails 3.1.10,spring security service和mysql。我有桌子:商店和產品。所以我的餐桌上有很多產品。 shop_id中的product_id是fk。在展會/索引頁面列出所有商店。當點擊店鋪名稱時,它會直接顯示店鋪的屬性。 (我把這個發送商店ID到網址)我想要做的是顯示屬於這家商店的所有產品。 我在shopController在Grails中使用foreignkey的數據庫列表值

def list = { 
params.max = Math.min(params.max? params.int('max') : 20, 100) 
Product product = Product.get(params.id) 
List districts = Shop.findAllByProduct(product) 
[productList : districts, 
producttInstanceTotal: Product.count()]} 

寫這個方法,在我的店裏/ show.gsp是

<g:each in="${productList}" status="i" var="p" > 
<div class="col-lg-2 col-md-4 col-xs-6 thumb"> 
    <a class="thumbnail" href="#"> 
     <img class="img-rounded" src="http://placehold.it/400x300" alt=""> 
     </a> 
     <div class='text-center'> 
     <p><g:link controller="product" action="show" params="[id:p.id]"> 
       ${fieldValue(bean: p, field: "productName")} 
      </g:link></p> 
      <p>${fieldValue(bean: p, field: "productName")}</p> 
      <p>${fieldValue(bean: p, field: "productBarcode")}</p> 
     </div> 
    </div> 
</g:each> 

,但沒有顯示。順便說一句,我使用generate-all創建所有控制器和視圖。感謝任何幫助

+1

你高清列出= {你應該改爲高清名單(){它不會呈現任何東西代替它將參數輸出回它所期望的list.gsp以存在於控制器名稱中。然後引用myshop/show.gsp - show.gsp將被綁定到def show(){}而不是def list - 尋找list.gsp的內容以進行調試 - 在您的控制器中添加println「 - product is $ product「println」區是每個元素下的「$區」,以查看您是否觸及它 – Vahid

回答

0

我想要做的是顯示所有屬於這家商店的產品。

在這種情況下,您應該將商店ID作爲參數傳遞給並列出屬於它的所有產品。您上面發佈的代碼是傳遞產品ID並列出銷售它的所有商店。

def list() { 
    Shop shop = Shop.get(params.id) 
    List products = Product.findAllByShop(shop) 
    [productList : products]  
} 

注意動作應被宣佈爲法def list() {},而不是一個封閉def list = {}

相關問題