如何在Velocity中的springFormInput中使用springMessage()?

时间:2013-08-15 21:29:49

标签: spring spring-mvc localization internationalization velocity

我正在将Spring MVC和Velocity模板用于国际化网站。

在我的注册表单上,我通过#springFormInput标签使用数据绑定。

如何在其中设置翻译的占位符?

会是这样的:

#springFormInput("signupForm.emailAddress", "required email='true' maxlength='100' placeholder='TRANSLATED STRING'")

我以为我可以这样做,但我不确定如何嵌套方法:

#springFormInput("signupForm.emailAddress", "required email='true' maxlength='100' placeholder='#springMessage("email_address")'")

(在这种情况下,“email_address”是messages.properties翻译文件中的“密钥”。)

2 个答案:

答案 0 :(得分:1)

我得到了这个工作。我必须在上面的行中设置一个变量(在Velocity中)。

查看$placeholderPassword的行。

#springBind("signupForm.password")
#if("$!status.errorCode" != "")
    #set($passwordError = true)
#end
<div class="input password#if($passwordError) invalid#end">
<div class="icon">
    <div class="image"></div>
</div>
#set($placeholderPassword = "#springMessage($TranslationConstants.PASSWORD)")
#springFormPasswordInput("signupForm.password", "placeholder='$placeholderPassword'")
<div class="status">
    <div class="image"></div>
    #if($passwordError)
        <div for="password" class="alert alert-error">
            $status.errorMessage
        </div>
    #end
</div>
</div>

$ TranslationConstants通过FieldMethodizer(https://stackoverflow.com/a/15126547/470749)注入。

答案 1 :(得分:0)

不使用FieldMethodizer并设置速度变量,您可以这样做:

#springFormInput("saleReportForm.reference" "class=form-control placeholder='#springMessage('saleReportForm.reference.placeholder')'")