java - 如何以自定义格式在 JSF 按钮上显示日期作为标签?

标签 java jsf

如何显示Date (或 Timestamp )在 JSF 上的自定义格式 <h:commandButton>

我正在使用 JSF 1.1

最佳答案

JSF <h:commandButton>不支持转换器,也不支持任何文本子项。您要么需要在一些辅助支持 bean 方法中执行该工作,

<h:commandButton ... value="#{bean.dateInCustomizedFormat}" />

public String getDateInCustomizedFormat() {
    return new SimpleDateFormat("yyyy-MM-dd").format(date);
}

为此创建一个可重用的自定义 EL 函数:

<%@taglib prefix="my" uri="http://example.com/el/functions" %>
...
<h:commandButton ... value="#{my:formatDate(bean.date, 'yyyy-MM-dd')}" />

package com.example.el;

import java.text.SimpleDateFormat;
import java.util.Date;

public final class Functions{

    private Functions() {
        // Hide constructor.
    }

    public static String formatDate(Date date, String pattern) {
        Locale locale = FacesContext.getCurrentInstance().getViewRoot().getLocale();
        return new SimpleDateFormat(pattern, locale).format(date);
    }

}

和一个/WEB-INF/functions.tld (考虑到 JSF 1.1,我假设您仍在使用 JSP,而不是 Facelets):

<?xml version="1.0" encoding="UTF-8" ?>
<taglib 
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"
    version="2.1">

    <tlib-version>1.0</tlib-version>
    <short-name>Custom Functions</short-name>
    <uri>http://example.com/el/functions</uri>

    <function>
        <name>formatDate</name>
        <function-class>com.example.el.Functions</function-class>
        <function-signature>java.lang.String formatDate(java.util.Date, java.lang.String)</function-signature>
    </function>
</taglib>

(注意:如果您使用的是 Servlet 2.4/JSP 2.0,请分别将 2_12.1 替换为 2_02.0)

关于java - 如何以自定义格式在 JSF 按钮上显示日期作为标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12419554/

相关文章:

java - AtomicInteger 原子的

java - SimpleDateFormat 始终返回相同的结果

java - 帮助选择基于java组件的Web框架

css - h :messages after migration from JSF 1. 1 到 JSF 1.2 的不同结果

java - 找不到添加到我的自定义库的库

java - IntelliJ 是否有像 Eclipse 一样的 "Diff Summary View"(结构比较)?

Java/Android - 搜索 ArrayList<HashMap<String, String>> 匹配键 -> 值

java - Primefaces 数据表 - 更改字体大小

javascript - 动态更改 p :selectCheckboxMenu when items are selected 的样式

jsf - 为什么调用未更改组件的验证器?