grails gorm:格式化的数字和日期

时间:2014-05-02 04:37:50

标签: jquery grails gorm

我想让我的webapps能够接收&在表格中显示格式化的数字和格式化的日期 例如: 数量:1,000,000.00 日期:2013年12月2日*我将使用jquery datepicker

最好的策略是什么?

我应该为每个数字和日期字段创建一个瞬态字段吗? 例如:

class Person{
 Date dateOfBirth;
 BigDecimal salary;
 ......

 String dateOfBirthFormatted;
 String salaryFormatted;

 static transients = ['salaryFormatted','dateOfBirthFormatted'];
}

或者我应该在视图中处理格式化的数字和日期字段(使用javascript并在提交表单之前处理)?

3 个答案:

答案 0 :(得分:2)

如果计划仅获取在视图图层中格式化的数据,则应分别对salarydateOfBirth使用formatNumberformatDate标记。

就视图而言,它看起来像

<g:formatDate format="MM/dd/yyyy" date="${dateOfBirth}"/>
<g:formatNumber number="${salary}" type="number" maxFractionDigits="2" />

其中dateOfBirthsalary是此视图模型的一部分。

答案 1 :(得分:1)

在Javascript中,

//date
    $("#dateOfBirth").datepicker({
                changeMonth : true,
                changeYear : true,
                dateFormat : 'dd/mm/yyyy',
                yearRange : '1901:2999',

            });
//salary
    if(/^(?!0\.00)\d{1,3}(,\d{3})*(\.\d\d)?$/.test($("#salaryFormatted").val())){
             return true;
    }
    else{
        $("#salaryFormatted").attr("oninvalid", "setCustomValidity('Please enter the salaryin proper format eg:(100.00,10,000.00)')");
            $("#salaryFormatted").prop('required', true);
            $("#salaryFormatted").val("");
            return false;
    }

在gsp中,

<input type="text" id="dateOfBirth" name="dateOfBirth"
    value="${formatDate(format:'dd/MM/yyyy', date: personInstance?.dateOfBirth)}" />


<g:textField name="salaryFormatted" id="salaryFormatted" onchange="try{setCustomValidity('')}catch(e){}" value="${String.format("%,.2f", personInstance?.salaryFormatted)}" />

使用上面的代码。我想,这会有所帮助

答案 2 :(得分:0)

这个函数我写了帮助,其中sep是日期格式的分隔符类型,如果没有输入则返回no。

function getDate(sep) {
    if(typeof sep==='undefined')sep='';
    var date = new Date();
    return (date.getFullYear().toString()+sep+(date.getMonth()+1)+sep+date.getDate());
}