我有一个具有 BigDecimal 类型的属性“initialPrice”的“Trade”类。此属性可以有不同的小数,具体取决于另一个类“符号”中包含的属性“小数”,因此需要不同的格式,例如“#,###0.##”、“#,###0.### ##" 等。这对输出字段没有问题 - 我制作了一个 TagLib 来解决这个问题。
问题在于输入字段。默认值是 i 舍入 3 个小数,因此如果您使用超过 3 个小数,您将在更新时丢失这些。
我不知道如何或是否可以在这里使用我的 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>
这是我需要修改的行 - 即我需要在“值”参数的引号之间写的内容。也许我需要更换整条线?该行位于 _form.gsp 模板中。
<g:field name="initialPrice" value="${tradeInstance.initialPrice}" required=""/>
希望任何人都可以对此有所帮助。
提前致谢...