我需要将URL中的java.util.Date从辅助bean传递给另一个Facelet(和bean)。
有人可以告诉我这是否有可能吗?我知道我不能在URL中传递复杂的对象,但是这也包括Date吗?
或者我是否必须将插入日期(使用JSF标记<h:inputText>
)转换为字符串,将其传递给URL,然后将其转换回日期?
答案 0 :(得分:10)
事实:HTTP请求参数属于String
类型。
因此,从逻辑上讲,在准备和编写HTTP请求参数之前,您必须先从Date
转换为String
,然后才能将String
转换回Date
在读取和解析传入的HTTP请求参数时。
您不清楚准备网址的准确程度,但鉴于您Date
已获得<h:inputText>
作为输入,我会假设您正在尝试将它作为支持bean操作方法中的重定向URL的参数传递。在这种情况下,请使用SimpleDateFormat
将Date
转换为String
。
public String submit() {
String dateString = new SimpleDateFormat("yyyyMMddHHmmss").format(date);
return "newpage.xhtml?faces-redirect=true&date=" + dateString;
}
在接收页面newpage.xhtml
中,您可以使用<f:viewParam>
将其设置为bean属性。它使用了SimpleDateFormat
,因此您可以使用相同的模式语法。
<f:metadata>
<f:viewParam name="date" value="#{bean.date}">
<f:convertDateTime pattern="yyyyMMddHHmmss" />
</f:viewParam>
</f:metadata>