无法触发 p:calendar 的 selectListener

发布于 2024-11-16 06:30:07 字数 1070 浏览 1 评论 0原文

我的代码如下:

<p:calendar showOn="button"
                  value="#{searchMB.filledFromDate}"
                  pattern="MM/dd/yyyy" maxlength="10" id="filledFromDate"
                  converter="submittedDateConverter"
                  converterMessage="#{message.filled_date_from_is_not_a_valid_date}"
                  styleClass="calendar" selectListener="#{searchMB.test}"
                  onchange="alert('')"
                  onSelectUpdate="filledToDate_panel">
                  <f:ajax event="blur" execute="filledFromDate"
                     render="filledToDate_panel"></f:ajax>
 </p:calendar>


   public void test(DateSelectEvent event) {
       System.out.println("-------------->" + event);
    }
  • 我想实现这个功能: 当我选择 Calendar 的下拉列表时,我想立即调用 test 方法,将选择的日期放入另一个 Calendar input 。

    如果我不添加转换器。该方法将被触发。但是 添加 converter 后,无法触发 selectListener="#{searchMB.test}" 方法。我不知道为什么。有人可以帮助我吗?< /p>

My code is as follows :

<p:calendar showOn="button"
                  value="#{searchMB.filledFromDate}"
                  pattern="MM/dd/yyyy" maxlength="10" id="filledFromDate"
                  converter="submittedDateConverter"
                  converterMessage="#{message.filled_date_from_is_not_a_valid_date}"
                  styleClass="calendar" selectListener="#{searchMB.test}"
                  onchange="alert('')"
                  onSelectUpdate="filledToDate_panel">
                  <f:ajax event="blur" execute="filledFromDate"
                     render="filledToDate_panel"></f:ajax>
 </p:calendar>


   public void test(DateSelectEvent event) {
       System.out.println("-------------->" + event);
    }
  • I want to implements this function:
    when I select the down-list of the Calendar , I want to invoke the test method right away, to put the select date to another Calendar input .

    If I don't add the converter . the method will be triggered.But
    after I add a converter , the method selectListener="#{searchMB.test}" can not be triggered.I don't konw why.Anyone can help me ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

人间不值得 2024-11-23 06:30:07

您不应在 Primefaces 组件中使用 标记。

对于许多 Primefaces 组件,您可以使用 标签,但是对于 您可以使用各种不同的属性来为您提供Ajax 功能。

来自 Primefaces 指南 2.2

OnSelectProcess - 选择日期时使用 ajax 进行处理的组件(默认值:@this)。

以及指南中的 Ajax 选择侦听器:

Ajax 选择
日历支持即时 ajax 选择,这意味着每当选择日期时,服务器端
selectListener 可以使用 org.primefaces.event.DateSelectEvent 实例作为
范围。可选的 onSelectUpdate 选项允许更新页面上的其他组件。

<p:calendar value="#{calendarBean.date}" onSelectUpdate="messages"
     selectListener="#{calendarBean.handleDateSelect}" />
 <p:messages id="messages" />

代码背后

public void handleDateSelect(DateSelectEvent event) {
     Date date = event.getDate();
     //Add facesmessage
}

我很好奇你需要转换器做什么? value 属性可以是 java.util.Date 类型的托管 bean 属性,无需显式转换器。

You should not use the <f:ajax> tag within a Primefaces component.

For many Primefaces components you can use the <p:ajax> tag instead however for <p:calendar> you can instead use a variety of different attributes to give you Ajax functionality.

From the Primefaces Guide 2.2

OnSelectProcess - Components to process with ajax when a date is selected (default: @this).

And on Ajax selection listener from the guide:

Ajax Selection
Calendar supports instant ajax selection which means whenever a date is selected a server side
selectListener can be invoked with an org.primefaces.event.DateSelectEvent instance as a
parameter. Optional onSelectUpdate option allows updating other component(s) on page.

<p:calendar value="#{calendarBean.date}" onSelectUpdate="messages"
     selectListener="#{calendarBean.handleDateSelect}" />
 <p:messages id="messages" />

Code behind

public void handleDateSelect(DateSelectEvent event) {
     Date date = event.getDate();
     //Add facesmessage
}

I am curious what you need the converter for anyway? The value attribute can be a managed bean property of the java.util.Date type without the need for an explicit converter.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文