将 JSF 中的日期转换为“标题”表中的属性
JSF 是否可以转换日期值并将其放入“title”属性中?在类似的问题 JSF Convert dates for title attribute 中,有一个答案,可以使用 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>
Is it possible in JSF to convert a date value and put it in "title" attribute? In a similar question, JSF Convert dates for title attribute, there was an answer, that it can be done with JSTL's fmt:formatDate
, but not in repeating components, such as UIData
. I need to do it inside a table (extended HtmlDataTable).
For example, the following code correctly displays the date as text value, but not in the title attribute:
<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>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
仅转换value
属性,而不转换其他属性。在这种特殊情况下,最好的选择是为此创建一个自定义 EL 函数。首先创建一个带有
public static
方法的final
类,该方法接受必要的参数并委托给 JSFDateTimeConverter
(包/类/方法名称为自由选择):在
/META-INF/functions.taglib.xml
中将其定义为facelet-taglib
(文件名可以自由选择):(注意:对于 Facelets 2.x,您需要 XSD 而不是 DTD;有关示例,请参阅 这个答案)
在
/WEB-INF/web.xml
中将其注册为新标签库:(注意:如果您已经拥有
facelets.LIBRARIES
定义,然后您只需添加以逗号分隔的新路径;对于 Facelets 2.x,您需要javax.faces.FACELETS_LIBRARIES
上下文参数)在 Facelets XHTML 文件中将其声明为新的 XML 命名空间:
最后,您可以按预期使用它:
如果需要,您可以对函数中的类型和样式进行硬编码,并为该方法指定一个不同的名称来指示这些名称默认值。
如果您碰巧使用 JSF 实用程序库OmniFaces,那么您也可以使用它的
#{of:formatDate()}
函数代替。The
<f:convertDateTime>
only converts thevalue
attribute, not other attributes. In this particular case, your best bet is to create a custom EL function for that.First create a
final
class with apublic static
method which takes the necessary arguments and delegates to the JSFDateTimeConverter
(package/class/method name is free to your choice):Define it as a
facelet-taglib
in/META-INF/functions.taglib.xml
(filename is free to choice):(note: for Facelets 2.x, you need a XSD instead of a DTD; for an example see this answer)
Register it as new taglib in
/WEB-INF/web.xml
:(note: if you already have the
facelets.LIBRARIES
definied, then you can just add the new path commaseparated; for Facelets 2.x, you needjavax.faces.FACELETS_LIBRARIES
context param instead)Declare it in the Facelets XHTML file as new XML namespace:
Finally you can use it as intended:
You can if necessary hardcode the type and styles in the function and give the method a different name which indicates those defaults.
If you happen to use JSF utility library OmniFaces, then you can also use its
#{of:formatDate()}
function instead.