如何在托管bean中获取primefaces日历的值?

时间:2013-06-05 19:37:25

标签: jsf primefaces

我在我的jsf页面中有一个日历,我希望在改变时获得他的价值我试图添加监听器但没有工作我发现其他解决方案但是没有使用primefaces 3.5:

   <p:calendar id="popupButtonCal22" value="#{zp01ManagedBean.datedeplanification}" showOn="button" locale="fr"  >
<p:ajax listener="#{zp01ManagedBean.setDatedeplanification(zp01ManagedBean.datedeplanification)}"/>   
                </p:calendar>
你知道如何解决这个问题吗?

我正在使用primefaces 3.5

5 个答案:

答案 0 :(得分:5)

  • <p:ajax partialSubmit="true"/>
    适用于inputText。

  • <p:ajax event="dateSelect"/>
    在选择日期时适用于日历。

  • <p:ajax event="change"/>
    在键入日期时使用日历。

答案 1 :(得分:0)

没有必要通过ajax侦听器手动设置值,因为在提交字段的值时会隐式调用setter。您所要做的就是在变更时提交价值。所以试试这个:

<p:calendar id="popupButtonCal22" value="#{zp01ManagedBean.datedeplanification}" showOn="button" locale="fr"  >
    <p:ajax process="popupButtonCal22" partialSubmit="true" event="change"/>   
</p:calendar>

如果您还希望在值更改后调用操作,则可以将listener="#{someBean.someAction"添加到p:ajax - 代码。

如果您想使用旧值和新值进行一些检查,请使用valueChangeListener标记的p:calendar - 属性。

答案 2 :(得分:0)

尝试将p:calendar组件放入h:form标记中。我不明白为什么你的代码实际上不起作用,你甚至不需要ajax ...

答案 3 :(得分:0)

试试这个,可能会有帮助:

<h:body>
    <h:form>
        <p:calendar id="dateObj" value="#{test.date1}" showOn="button" pattern="dd-MMMM-yyyy">
            <p:ajax event="dateSelect" listener="#{test.handleDateSelect}"/>
        </p:calendar>
    </h:form>
</h:body>

Bean就是这样:

private Date date1;
public Date getDate1() {
    return date1;
}

public void setDate1(Date date1) {
    this.date1 = date1;
}


public void handleDateSelect(DateSelectEvent event){

    System.out.println(event.getDate());
}

答案 4 :(得分:0)

<p:calendar ...>
    <p:ajax event="dateSelect" ... />
    <p:ajax event="change" ... />
</p:calendar>

这适合我。