[英]Display date object/value from controller to view in Play Framework/Scala
我有一个由控制器检索并显示在视图中的模型的日期。 但是,日期不会在视图的字段中显示为值。
这是视图:
@(intakeForm: Form[Application.IntakeAdd], lookups: java.util.List[Lookup], users: java.util.List[User], intake: Intake)
@main(null) {
...
<div class="element-date">
<label class="title"><span class="required">*</span>Date Requested:</label>
<div class="item-cont">
<input class="large" data-format="yyyy-mm-dd" type="date" name="daterequested" required="required" placeholder="Date" value="@intake.daterequested" />
<span class="icon-place"></span>
</div>
</div>
...
}
我的字段值为:
value="@intake.daterequested"
但它不显示任何值-所有其他值都起作用,仅日期不起作用。
该值在模型中存储为Java Date()对象:
@Constraints.Required
@Formats.DateTime(pattern = "yyyy-MM-dd")
public Date daterequested;
我猜可能在视图中可以使用一些翻译来纠正此问题?
感谢您的帮助!
通过直接在HTML中显示日期来检查日期的呈现方式,例如<span>@intake.daterequested</span>
我怀疑它将采用dow mon dd hh:mm:ss zzz yyyy
的格式(请参见javadoc中的Date#toString ),与yyyy-mm-dd
的所需格式不匹配。
您可以在模板中使用SimpleDateFormat
来按要求设置日期格式,也可以为Intake
创建一个DTO,它已经包含了所需格式的日期。 如果选择前者,则将代码更改为以下内容:
value="@(new SimpleDateFormat("yyyy-MM-dd").format(intake.daterequested))"
您还可以定义模板的可重用日期格式。 如果您必须格式化多个日期,它将保存为每个日期创建一个格式化程序。
例如...
控制器
package controllers;
import java.util.Date;
import play.mvc.*;
import views.html.*;
public class HomeController extends Controller {
public Result index() {
return ok(index.render(new Date()));
}
}
模板这演示了使用嵌入式格式和可重用格式。
@import java.text.SimpleDateFormat
@(date: java.util.Date)
<html>
@defining(new SimpleDateFormat("yyyy-MM-dd")) { dateFormatter =>
<body>
<div>
<b>Raw: </b>@date
</div>
<div>
<b>In-line formatter: </b>@(new SimpleDateFormat("yyyy-MM-dd").format(date))
</div>
<div>
<b>Shared formatter: </b>@dateFormatter.format(date)
</div>
</body>
}
</html>
输出
原始: 2016年12月14日星期三09:36:15 CET
内联格式器: 2016-12-14
共享的格式化程序: 2016-12-14
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.