Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Grails 在TagLibs中保持属性类的一致性_Grails_Taglib - Fatal编程技术网

Grails 在TagLibs中保持属性类的一致性

Grails 在TagLibs中保持属性类的一致性,grails,taglib,Grails,Taglib,我正在使用自定义标记库格式化日期。在我看来,我正在将一个域字段传递到TagLib中,如下所示: <g:usDate value="${invoice.invoiceDate}" /> 在本例中,该值以日期类型进入TagLib。但是,当我尝试使用TagLib格式化字段内容时: <g:textField name="invoiceDate" value="${g.usDate(value:"${invoice.invoiceDate}")}" /> 该值作为GSt

我正在使用自定义标记库格式化日期。在我看来,我正在将一个域字段传递到TagLib中,如下所示:

<g:usDate value="${invoice.invoiceDate}" />

在本例中,该值以日期类型进入TagLib。但是,当我尝试使用TagLib格式化字段内容时:

<g:textField name="invoiceDate" value="${g.usDate(value:"${invoice.invoiceDate}")}" />


该值作为GStringImpl的一种类型进入标记库。我是否可以在将值作为日期传递的文本字段上使用不同的语法,以便在两种情况下使用相同的标记库?

删除内部引号并
${}

<g:textField name="invoiceDate" value="${g.usDate(value:invoice.invoiceDate)}" />

这将把实际对象
invoice.invoiceDate
传递给标记库,而不是创建包含对象字符串表示形式的GString


这有点让人困惑,但你需要记住,
${}
在不同的地方意味着不同的东西。作为标记属性,它表示“大括号内的内容是Groovy表达式,对其求值并将结果值直接传递给标记”。但是,一旦进入Groovy表达式,它就具有正常的GString含义“计算此表达式并将其
toString
表示插入GString中”。

。谢谢伊恩的回答和额外的解释。您的解决方案如广告所示有效。