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

使用Primefaces ajax的Omnifaces SkipValidator

戚锦
2023-03-14

我很难让Omnifaces skipValidators标记用于Primefaces ajax事件。基本上,我需要根据selectOneMenu的选择更新表单中的许多元素,但我还需要保留已输入的任何值,而不是验证表单。然而,我无法让它工作。下面是问题的一个小例子:

xhtml

            <h:form>
                <h:panelGrid columns="3">
                    <p:outputLabel for="console" value="Basic:" />
                    <p:selectOneMenu id="console" value="#{testBean.value}" style="width:125px">
                        <f:selectItem itemLabel="Select One" itemValue="" />
                        <f:selectItem itemLabel="Xbox One" itemValue="Xbox One" />
                        <f:selectItem itemLabel="PS4" itemValue="PS4" />
                        <f:selectItem itemLabel="Wii U" itemValue="Wii U" />
                        <p:ajax event="change" process="@form" update="@form">
                            <o:skipValidators/>
                        </p:ajax>
                    </p:selectOneMenu>
                    <p:message for="console"/>
                    <p:outputLabel for="reqField" value="RequiredField:"/>
                    <p:inputText id="reqField" required="#{testBean.required}" requiredMessage="REQUIRED!"/>
                    <p:message for="reqField"/>
                </h:panelGrid>
            </h:form>

测试豆:

@Named(value = "testBean")
@SessionScoped
public class TestBean implements Serializable {

    private String value;

    /**
     * Creates a new instance of TestBean
     */
    public TestBean() {
    }

    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }

    public boolean isRequired() {
        return this.value != null && !this.value.isEmpty();
    }

}

当页面加载时,它看起来是正确的-reqField中没有星号。选择一个控制台值后,页面会正确更改,并且在请求字段旁边会出现一个星号。但是,在选择控制台值后,如果再次从菜单中选择“Select One”,则会显示验证错误。

如果我理解正确,o: skipValidators应该会阻止验证的发生。这是怎么回事?

我用的是全面2.3和底面5.1.12

共有2个答案

詹甫
2023-03-14

我没有Ajax,试试这个。希望这有帮助!

<代码>

该标准只允许基于每个表单或每个请求的验证控制(通过在其属性中使用多个标签和条件EL表达式),最终可能会以样板代码告终。尽管有它的名字,但该标准实际上根本没有任何工具来验证bean

<代码>

<p:commandButton 
            id="refresh"
            icon="fa fa-refresh"
            styleClass="refresh-button btn-blue"
            process="@form"
            update="phone_1 @form:htmlView">
   <o:validateBean disabled="true"/>
</p:commandButton>

<代码>

<p:commandButton 
      id="refresh"
      icon="fa fa-refresh"
      styleClass="refresh-button btn-blue"
      process="@form"
      update="phone_1 @form:htmlView">
   <o:skipValidators/>
</p:commandButton>

如果你想知道更多,请看这里:

http://showcase.omnifaces.org/validators/validateBean http://showcase.omnifaces.org/taghandlers/skipValidators

惠文彬
2023-03-14

如showcase中所述,标签必须放置在UICommand或ClientBehaviorHolder组件内。你把它放在一个<代码>

<p:selectOneMenu ...>
    ...
    <p:ajax ... />
    <o:skipValidators />
</p:selectOneMenu>
 类似资料:
  • 我在Scala2.11.1和Hzaelcast 3.5中使用kryo进行序列化。我试图将数据放在hazelcast映射中,但我得到了KryoException 下面是我的用户类序列化程序 现在,当我将用户类对象从Hcast客户端放入相应的映射中时,如下所示 它给了我这些例外: 以下是中的 请帮帮我!!

  • 本文向大家介绍webpack proxy 使用(代理的使用),包括了webpack proxy 使用(代理的使用)的使用技巧和注意事项,需要的朋友参考一下 为什么要写篇文章 这两天的开发中遇到一些需要代理才能解决的问题, 在这里记录一下, 方便以后的查阅. 为什么要用代理 跨域 在开发过程中, 我们的开发环境一般都是http:// localhost, 但是如果需要请求的数据不在本地, 那么我们就

  • 如何使用Spring RestTemplate发送GET请求?其他问题都用了POST,但我需要用get。当我运行这个程序时,程序继续工作,但似乎网络堵塞了,因为它在一个AsyncTask中,当我单击这个按钮后试图运行另一个AsyncTask时,它们将无法工作。 我试着做

  • 问题内容: 最近,我尝试了解 java.math.MathContext 的用法,但未能正确理解。它用于四舍五入。如果是,为什么不四舍五入十进制数字,甚至尾数部分。 从API文档中,我知道它遵循,和规范中指定的标准,但是我没有让他们在线阅读。 如果您对此有任何想法,请告诉我。 问题答案: @贾坦 谢谢您的回答。这说得通。您能否在BigDecimal#round方法的上下文中向我解释MathCont

  • 主要内容:下载 Nexus 3,启动 nexus 服务,访问 nexus 3.x目前 Nexus 分为 Nexus 2 和 Nexus 3 两个大版本,它们是并行的关系。与 Nexus 2 相比,Nexus 3 具有很多优势,例如支持更多的仓库格式、优化了用户的使用界面以及更加强大的搜索功能等等。 目前使用最多的,运行最稳定是 Nexus 2,但随着 Nexus 3 对 Maven 的支持越来越稳定,很多公司和组织都陆续开始使用 Nexus 3。 本节我们将介绍 Nexus

  • 使用StaggedGridLayoutManager/GridLayoutManager如何使网格项在垂直方向上具有两个跨距,在水平方向上具有两个跨距?

  • 本文向大家介绍arguments 的使用?相关面试题,主要包含被问及arguments 的使用?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: arguments是类数组对象,有length属性,不能调用数组方法 可用Array.from()转换

  • JsTestDriver 是 javascript 单元测试工具,webstorm 集成了 JsTestDriver ,可以直接使用。 1.在你的根目录中插入JsTestDriver的配置文件jsTestDriver.conf 内容可能如下:(根据本机目录的实际情况配置) server: http://localhost:9876 load: - assets/3.0/tools/jasmin