当前位置: 首页 > 知识库问答 >
问题:

使p:calendar只读

谯灿
2023-03-14

我想让 成为只读的,这样用户就只能因为这个问题从日历中选择一个日期(但这不是一个解决方案)。

为此,我正在执行readonly=“#{facescontext.renderresponse}”

<p:calendar id="calendarId" 
        value="#{bean.property}" 
        converter="#{jodaTimeConverter}" 
        pattern="dd-MMM-yyyy hh:mm:ss a" 
        showOn="button" 
        readonly="#{facesContext.renderResponse}" 
        effect="slideDown"
        required="true" 
        showButtonPanel="true" 
        navigator="true"/>

共有1个答案

潘安平
2023-03-14

自JSF2.0以来,这种行为确实发生了变化。只有在显式调用了FacesContext#RenderResponse()时,FacesContext#GetRenderResponse()才返回True。以前,这种情况发生在每个GET请求的还原视图阶段。但是,由于引入了 ,当至少存在一个视图参数时,JSF将不再这样做,它将继续执行每个阶段,而不跳过任何阶段,以便正确处理视图参数。

您的页面中显然有一个 。这完全没有问题,但是作为测试,尝试删除它,您将看到它在一个普通的GET请求上也返回true

你基本上有两种选择可以绕过它:

readonly="#{not facesContext.postback or facesContext.renderResponse}"
readonly="#{facesContext.currentPhaseId.ordinal eq 6}"

如果你使用OmniFaces,你可以让它变得不那么难看。

<o:importConstants type="javax.faces.event.PhaseId" />
...
readonly="#{facesContext.currentPhaseId eq PhaseId.RENDER_RESPONSE}"
 类似资料:
  • 问题内容: 我注意到有人问过这个问题,但是没有正确回答。 我有一个数据表,其中有两列 开始日期 和 结束日期 。两者都包含总理字符p:calendar控件。我需要确保每一行中column1中的日期都不晚于column2中的日期。我想将其绑定到JSF验证框架中,但是遇到了麻烦。 我尝试将数据表标记为rowStatePreserved =“ true”,这使我能够获取值,但是还是有些错误,因为当它失败

  • 问题内容: 在Java中,如何在初始化后将其设置为只读(以便没有人可以添加,编辑或删除元素)? 问题答案: 通行证进入。它返回指定列表的不可修改视图。仅使用此返回的,而绝不使用原始的。

  • 问题内容: 我想在中选择日期后调用Bean 。在我的设置中,我有一个Bean,该类是一个带有日期字段 validFrom的 。 好处是,每次选择日期时,都会使用正确的对象调用bean方法。不好的是,它没有正确的值。它总是 落后一步 : 字段初始化为2012-01-01 GUI更改为2012-01-05,Bean方法调试为2012-01-01 GUI更改为2012-01-15,Bean方法调试为20

  • 本文向大家介绍如何使Java ArrayList只读?,包括了如何使Java ArrayList只读?的使用技巧和注意事项,需要的朋友参考一下 您可以使用Collections接口的unmodifiableList()方法使集合不可修改。 示例 输出结果

  • 问题内容: 使用JPA将实体设为只读的正确方法是什么?我希望我的数据库表永远不会以编程方式进行修改。 我想我知道我应该用锁定我的对象。从数据库检索后,是否可以使用注释使我的实体直接锁定?还是我必须弄乱并覆盖该特定实体的通用DAO? 问题答案: 一种解决方案是使用基于字段的注释,将字段声明为,并仅建议公共获取者。这样做,您的对象无法更改。 (此解决方案不是特定于实体的,它只是构建不可变对象的一种方法

  • 我搜索了一下,只能找到这个关于socket.io0.9的wiki页面。 最终,我找到了engine.io-client的文档(socket.io-client基于1.x分支)。这是我写的代码,似乎正在工作。但是,我想知道这是正确的还是我做错了什么: 奇怪的是,仅仅将属性设置为仅具有的数组是不够的;我还必须禁用。这是正确的吗? 我有了一些新发现。 当仅设置为时,是否启用并没有什么区别。这正常吗?