У меня есть класс «Торговля» со свойством «initialPrice» типа BigDecimal. Это свойство может иметь разные десятичные числа в зависимости от свойства «десятичные знаки», содержащиеся в другом классе «Символ», и для этого нужны разные форматы, например. «#, ### 0. ##", "#, ### 0. #####" и т. Д. Это не проблема с выходными полями - я создал TagLib для решения этой проблемы.Динамическое формирование (десятичных знаков) полей ввода в Grails
Проблема с полем ввода. По умолчанию это i раундов с 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>
Вот строка Мне нужно изменить - то есть то, что мне нужно написать между кавычками для «значения» -параметра. Maybee Мне нужно заменить всю линию? Строка находится в шаблоне _form.gsp.
<g:field name="initialPrice" value="${tradeInstance.initialPrice}" required=""/>
Надеюсь, что кто-то может распространить свет на это, чтобы помочь.
Спасибо заранее-х ...
Спасибо о том, что работал. Я новичок, по крайней мере, очень неопытный в webdevelopment, поэтому я не понял, что должен заменить g: g. при вызове из строки значений. Знаете, я уже пробовал ваше решение и провалил причину "g:" – larand