Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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
在JSF中为“转换日期”;标题「;表中的属性_Jsf_Date_Converter - Fatal编程技术网

在JSF中为“转换日期”;标题「;表中的属性

在JSF中为“转换日期”;标题「;表中的属性,jsf,date,converter,Jsf,Date,Converter,在JSF中是否可以转换日期值并将其放入“title”属性中?在一个类似的问题中,有一个答案是,可以使用JSTL的fmt:formatDate,但不能使用重复的组件,例如UIData。我需要在一个表(扩展的HtmlDataTable)中执行此操作 例如,以下代码将日期正确显示为文本值,但不显示在“标题”属性中: <h:outputText class="yui-tip" title="#{task[col.attributeName]}" value="#{task[col.attribut

在JSF中是否可以转换日期值并将其放入“title”属性中?在一个类似的问题中,有一个答案是,可以使用JSTL的
fmt:formatDate
,但不能使用重复的组件,例如
UIData
。我需要在一个表(扩展的HtmlDataTable)中执行此操作

例如,以下代码将日期正确显示为文本值,但不显示在“标题”属性中:

<h:outputText class="yui-tip" title="#{task[col.attributeName]}" value="#{task[col.attributeName]}">
    <f:convertDateTime type="both" dateStyle="medium" timeStyle="short"   timeZone="#{userProfileBean.clientTimeZone}" />
</h:outputText>

仅转换
属性,而不转换其他属性。在这种特殊情况下,最好的办法是为此创建一个自定义EL函数

首先创建一个带有
公共静态
方法的
final
类,该方法接受必要的参数并委托给JSF
DateTimeConverter
(包/类/方法名称由您自由选择):

/META-INF/functions.taglib.xml
中将其定义为
facelet taglib
(文件名可自由选择):

(注意:如果已经定义了
facelets.LIBRARIES
,则只需添加新路径commaseparated;对于facelets 2.x,则需要
javax.faces.facelets\u LIBRARIES
上下文参数)

在Facelets XHTML文件中将其声明为新的XML命名空间:

<html lang="en"
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:uf="http://example.com/util/functions"
    ...
>

最后,您可以按预期使用它:

<h:outputText 
    value="foo"
    title="#{uf:convertDateTime(bean.date, 'both', 'medium', 'short', bean.timeZone)}" />

如有必要,可以对函数中的类型和样式进行硬编码,并为该方法指定一个不同的名称,以指示这些默认值


如果您碰巧使用了JSF实用程序库,那么您也可以使用它的函数。

您使用的是JSF 1.x还是2.x?您使用的是JSP还是Facelets?我使用的是JSF1.2(或1.1)和Facelets。谢谢。我贴出了答案。对于JSP而不是Facelets,您需要
/WEB-INF
中的
.tld
文件,而不是
.taglib.xml
。对于JSF 2.x而不是JSF 1.x,您需要以稍微不同的方式重新声明
.taglib.xml
的根元素(没有doctype)。
<context-param>
    <param-name>facelets.LIBRARIES</param-name>
    <param-value>/META-INF/functions.taglib.xml</param-value>
</context-param>
<html lang="en"
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:uf="http://example.com/util/functions"
    ...
>
<h:outputText 
    value="foo"
    title="#{uf:convertDateTime(bean.date, 'both', 'medium', 'short', bean.timeZone)}" />