- Multi-select dropdown box with size attribute doesn't work as expected
- many-to-many stores relations in wrong columns
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.
<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 {
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
class StockPurchase {
static belongsTo = [StockSale]
static hasMany = [stockSales:StockSale]
}
class StockSale {
static hasMany = [stockPurchases:StockPurchase]
}
class 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

0 comments:
Post a Comment