- Multi-select dropdown box with size attribute doesn't work as expected Though the documentation select tag in GSP tablibrary doesn't explicitely say anything about multiple select, it works by passing additional parameters ( multiple="multiple" size="4"). e.g.
- many-to-many stores relations in wrong columns e.g. Problem domain A stock is sold that was purchased multiple times (in fractions). A stock is sold multiple times (in fractions) that was purchased in whole once. Domain Classes
<g:select name="stockPurchase.id" from="${StockPurchase.list()}" optionkey="id" multiple="multiple" size="4"></g:select>
However, the result will produce a multi select drop-down but the size attribute is not honored. The bug lies in css. Open main.css under web-app/css and edit the following line and remove select,:input, select, textarea {
class StockPurchase { static belongsTo = [StockSale] static hasMany = [stockSales:StockSale] } class StockSale { static hasMany = [stockPurchases:StockPurchase] }
Controllerclass StockSaleController { //code omitted for brevity //... def save = { def stockSale = new StockSale() stockSale.properties = params def stockPurchases = params.'stockPurchase.id' stockPurchases.each { stockSale.addToStockPurchases(StockPurchase.findById(it)) } if(stockSale.save()) { flash.message = "StockSale ${stockSale.id} created." redirect(action:show,id:stockSale.id) } else { render(view:'create',model:[stockSale:stockSale]) } } }
In addition to stock_sale and stock_purchase tables, it also craetes a reference table named stock_sale_stock_purchase (with columns stock_sales_id, stock_purchases_id) automatically to support many-to-many relationship. However, when a stock sale is saved, the reference table ends up with ids switched. But the application works correctly as expected. I initially thought there could be a bug. But looks like there isn't and it is expected to work that way. Check for an explanation by Graeme Rocher here
No comments:
Post a Comment