如何从JSF页面传递URL中的java.util.Date?

时间:2013-12-11 15:56:37

标签: jsf url parameter-passing jsf-2.2

我需要将URL中的java.util.Date从辅助bean传递给另一个Facelet(和bean)。

有人可以告诉我这是否有可能吗?我知道我不能在URL中传递复杂的对象,但是这也包括Date吗?

或者我是否必须将插入日期(使用JSF标记<h:inputText>)转换为字符串,将其传递给URL,然后将其转换回日期?

1 个答案:

答案 0 :(得分:10)

事实:HTTP请求参数属于String类型。

因此,从逻辑上讲,在准备和编写HTTP请求参数之前,您必须先从Date转换为String,然后才能将String转换回Date在读取和解析传入的HTTP请求参数时。

您不清楚准备网址的准确程度,但鉴于您Date已获得<h:inputText>作为输入,我会假设您正在尝试将它作为支持bean操作方法中的重定向URL的参数传递。在这种情况下,请使用SimpleDateFormatDate转换为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>

另见: