我有一个“Trade”类,其属性为BigDecimal类型的“initialPrice”。这个属性可以 具有不同的小数,取决于另一个类“符号”中包含的属性“小数”,因此需要不同的格式,例如“#,### 0。##”,“#,### 0。#####”等 这对输出字段没有问题 - 我做了一个TagLib来解决这个问题。
问题在于输入字段。默认值是我的3轮小数,所以如果你使用超过3个decmals,你将在更新时丢失它们。
我不知道在这里如何或甚至可以使用我的TagLib。我一直在尝试很多不同的方法,但都没有。
这是我的TagLib:
class PriceTagLib {
def fmtPrice = {attrs, body->
def BigDecimal number = attrs.number
def int noOfDecimals = attrs.decimals
switch (noOfDecimals) {
case 1: out <<new DecimalFormat('###,##0.#').format(number)
break
case 2: out << new DecimalFormat('###,##0.##').format(number)
break
case 3: out << new DecimalFormat('###,##0.###').format(number)
break
case 4: out << new DecimalFormat('###,##0.####').format(number)
break
case 5: out << new DecimalFormat('###,##0.#####').format(number)
}
}
}
这是我的课程......
class Symbol {
String name //The name of the symbol e.g. EURUSD, USDCAD etc.
int decimals
static hasMany = [trades:Trade]
}
class Trade {
static belongsTo = [symbol:Symbol, strategy:Strategy]
static hasMany = [positions:Position]
BigDecimal initialPrice
Symbol symbol
Strategy strategy
Position positions
static constraints = {
type(inList:["Sell", "Buy"])
initialPrice(scale:5)
positions(nullable:true)
}
}
这来自show.gsp,它按我的意思运作:
<span class="property-value" aria-labelledby="initialPrice-label"><g:fmtPrice decimals="${tradeInstance.symbol.decimals}" number="${tradeInstance.initialPrice}"></g:fmtPrice></span>
这是我需要修改的行 - 即我需要在“value”参数的引号之间写入。 也许我需要更换整条生产线? 该行位于_form.gsp模板中。
<g:field name="initialPrice" value="${tradeInstance.initialPrice}" required=""/>
希望任何人都可以对此有所帮助。
提前感谢...
答案 0 :(得分:1)
您只需在value属性中调用标记lib:
<g:field name="initialPrice" value="${g.fmtPrice(decimals: tradeInstance.symbol.decimals, number: tradeInstance.initialPrice)}" required=""/>