当前位置: 首页 > 面试题库 >

值更改侦听器在primefaces日历中不起作用

谷梁向荣
2023-03-14
问题内容

我正在使用primefaces 3.2和JSF 2.0

我的情况是我的表单中有文件日期,上次日期和下一个日期。当用户输入文件日期时,我需要更新bean中的文件日期值,以便该值可以用作属性提示的最后日期中的最小日期,因此可以在下一个日期选择中使用。

根据我的知识价值更改侦听器可以在提交表单时执行,所以我不能使用它。我用过 p:ajax
。但是我仍然无法设置文件日期。由于未设置文件日期,因此允许用户选择文件日期之前的上一个日期和下一个日期。

caseMaster.xhtml

<p:calendar value="#{caseUitility.caseMaster.fileDate}" id="fileDate" effect="fadeIn" pattern="dd/MM/yyyy" readOnlyInputText="true">
    <p:ajax event="change" listener="#{caseUitility.dateChange}"/>
</p:calendar>

<p:calendar value="#{caseUitility.caseMaster.lastDate}" required="true" id="lastDate" effect="fadeIn" pattern="dd/MM/yyyy" readOnlyInputText="true" mindate="#{caseUitility.caseMaster.fileDate}" >
</p:calendar>

CaseUitility.java

public void dateChange(ActionEvent ae) {
    System.out.println("File Date: " + caseMaster.getFileDate());
    System.out.println("Hello... I am in DateChange");
}

可以指导我在这里做错什么吗?


问题答案:

在PrimeFaces的最新版本中, SelectEvent 应使用下面的代码片段

<p:calendar id="event" value="#{calendarView.date4}">
    <p:ajax event="dateSelect" listener="#{calendarView.onDateSelect}" update="msgs" />
</p:calendar>



public void onDateSelect(SelectEvent event) {
    FacesContext facesContext = FacesContext.getCurrentInstance();
    SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
    facesContext.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Date Selected", format.format(event.getObject())));
}

在较早的primefaces版本中使用 DateSelectEvent

<p:ajax event="dateSelect" listener="#{caseUitility.dateChange}"/>



public void dateChange(DateSelectEvent event) {
    Date date = event.getDate();
    System.out.println("File Date: " + date);
    System.out.println("Hello... I am in DateChange");
}


 类似资料:
  • 我正试着在日历上使用监听器。我正在做以下工作: 我试过这样做,但不起作用

  • 在我的代码中,如果用户在ComboBox 2中输入值,它将反映在TextField中,但是如果用户从ComboBox 1的下拉列表中选择,而不更改ComboBox 2中的值,那么TextField中的值将保持不变,它不会更改。我做错了吗? 测试2。txt:1任何帮助都将不胜感激!

  • 问题内容: 我希望消息框在用户更改文本字段中的值后立即显示。目前,我需要按Enter键才能弹出消息框。我的代码有什么问题吗? 任何帮助,将不胜感激! 问题答案: 将侦听器添加到为您自动创建的基础文档中。

  • 问题内容: 我希望在用户更改文本字段中的值后立即显示消息框。目前,我需要按Enter键才能弹出消息框。我的代码有什么问题吗? 任何帮助,将不胜感激! 问题答案: 将侦听器添加到为你自动创建的基础文档中。

  • 问题内容: 我想一种添加到我当过用户更改的,它的值,应用程序在控制台上打印的东西。 我进行了搜索,发现以下非常相似的问题:JTextField的值更改侦听器 提到的问题的答案非常清楚和有效,但是不幸的是,它仅对(Not )有用,因为它说您应该像这样使用DocumentListener: 但是在JavaFX的TextField中,您无法执行此操作。所以?解决办法是什么? (使用代码进行描述可能会很好

  • 问题内容: 我正在尝试使用TableView组件的onScroll事件侦听器: FXML: Java控制器: 但这不起作用!我做错了什么? 我需要捕获垂直滚动器以手动控制滚动位置并根据向下或向上滚动获取相关数据。 谢谢大家! 问题答案: 我认为可能发生的情况是TableView包含的自身正在消耗scroll事件并在内部对其进行处理,因此它永远不会到达您的应用程序处理程序。 最初,我认为您可能要使用