【问题标题】:Dynamically set default date on primefaces calendar with javascript使用javascript在primefaces日历上动态设置默认日期
【发布时间】:2013-04-09 12:32:31
【问题描述】:

在给定另一个日历中的选定日期的情况下,我需要为 p:calendar 设置建议的日期。我可以通过解析 DOM 来获取要设置的日期的字符串表示,所以那里没有问题。我尝试对组件使用 Client Side API,因为首选方法是在选择日历时执行此操作:

客户端 API 方法(如 primefaces 文档中所述):

setDate(date):要显示的日期(设置显示日期)

日历组件:

<p:calendar value="#{someVar.startDate}"
            locale="en_GB"
            navigator="true"
            id="startDate"
            showOtherMonths="true"
            size="11"
            pattern="yyyy-MM-dd"
            pages="4"
            widgetVar="startDateCalendar"
            onclick="startDateCalendar.setDate(new Date(2012, 9, 9));"/>

这不会影响任何事情,即使函数正在执行。我已经调试过了。

是否可以使用 javascript 为p:calendar 设置默认日期?理想情况下,它应该作为组件的pagedate 属性,即它只是为日历预填充的建议日期,而不是预填充实际值。

【问题讨论】:

    标签: javascript jsf primefaces jsf-2


    【解决方案1】:

    在你的 bean 中设置默认日期。

    private Date date = new Date(); // define your start date here
    
    public Date getDate() {
        return date;
    }
    
    public Date setDate(final Date newDate) {
        this.date = newDate;
    }
    

    【讨论】:

    • OP 明确写道,他想在 PrimeFaces 客户端 API (JavaScript) 中执行此操作。
    • 谢谢。但我们不想这样做是有原因的。这将需要大量和丑陋的逻辑。这不仅仅是一个默认值的问题,它是一整棵日历树,我们需要解析才能获得正确的日历。使用 javascript 可以用更少的代码来完成。
    • 逻辑需要在某个地方,对吧?为什么你需要解析任何东西?如果每个日历都有一个 Date 对象(是吗?),那么日历组件的值应该在 bean 中。因此,可以在 Java 代码中轻松定义每个日历的值。
    • 相信我。我们正在使用带有多达 200 个日历输入的 p:treeTable。它需要解析该数据结构并找到正确的日期。然后使用类似 jQuery 的语法重新渲染正确的行。
    • @Magnilex:不,它不会,组件(几乎)会自动执行此操作。您最喜欢已经有一些其他“解决方法”需要这种额外的设置值的方式
    【解决方案2】:

    试试onclick="PF('calendar_widget_name').setDate(new Date(2012, 9, 9));"

    【讨论】:

    • 对于 OP 使用的版本,(还)不需要使用 `PF('...')。 OP说函数被调用了,他调试了!。
    猜你喜欢
    • 2017-12-24
    • 2014-05-06
    • 1970-01-01
    • 1970-01-01
    • 2016-02-13
    • 1970-01-01
    • 1970-01-01
    • 2013-04-29
    相关资源
    最近更新 更多