Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Primefaces 在ui中使用Omnifaces validateAllOrNone组件:重复_Primefaces_Jsf 2.2_Omnifaces - Fatal编程技术网

Primefaces 在ui中使用Omnifaces validateAllOrNone组件:重复

Primefaces 在ui中使用Omnifaces validateAllOrNone组件:重复,primefaces,jsf-2.2,omnifaces,Primefaces,Jsf 2.2,Omnifaces,我有以下问题: 我尝试在ui:repeat中使用o:validatealornone组件,这很好。但它不适用于我的复合组件 我的复合组件实际上是简单的p:inputText,用于舒适地输入电话号码。在那里,我使用了javascript,它提供了使用不同电话号码(inputPhoneNumber)的工作 $(“#{cc.fullId}”).intlTelInput( { utilsScript:“intl tel input/js/utils.js”, autoHideDialCode:错误,

我有以下问题:

我尝试在ui:repeat中使用o:validatealornone组件,这很好。但它不适用于我的复合组件

我的复合组件实际上是简单的p:inputText,用于舒适地输入电话号码。在那里,我使用了javascript,它提供了使用不同电话号码(inputPhoneNumber)的工作


$(“#{cc.fullId}”).intlTelInput(
{
utilsScript:“intl tel input/js/utils.js”,
autoHideDialCode:错误,
国家模式:错误,
首选国家:[{cc.preferredCountries}],
仅限国家:[抄送国家],
dropdownContainer:'body'
}
);
此外,我还有一个表单,可以创建联系人,如电话号码、电子邮件、skype和其他。该表单允许创建联系人列表。在这里,我使用了复合组件,如果联系人的类别是电话号码,则使用其他简单输入文本:

<ui:repeat value="#{bean.contacts}" var="contact">
    <p:selectOneMenu id="contact_type" value="#{contact.type}">
       ...
    </p:selectOneMenu>

    <p:outputPanel rendered="#{contact.category.equals(category.PHONE)}">
        <mycomponent:inputPhoneNumber id="contact_phone_value" value="#{contact.value}" preferred="ru">
        <o:validateAllOrNone components="contact_type contact_phone_value"/>
    </p:outputPanel>

    <p:outputPanel rendered="#{ne contact.category.equals(category.PHONE)}">
        <p:inputText id="contact_other_value" value="#{contact.value}"/>
        <o:validateAllOrNone components="contact_type contact_other_value"/>
    </p:outputPanel>
</ui:repeat>

...
我使用了o:validateAllOrNone来检查联系人类型和他的值是否为空。它适用于p:inputText,但当我尝试将此组件用于mycomponent:inputPhoneNumber时,我发现以下异常:

异常消息:ValidateAllOne属性“components”必须引用 现有客户端ID。找不到客户端ID“联系人类型”

我发现了一个问题,我知道如何完全进入ui:repeat。之后,我重写了我的代码:

<ui:repeat id="contact_list" value="#{bean.contacts}" var="contact" varStatus="status">
    <p:selectOneMenu id="contact_type" value="#{contact.type}">
       ...
    </p:selectOneMenu>

    <p:outputPanel rendered="#{contact.category.equals(category.PHONE)}">
        <mycomponent:inputPhoneNumber id="contact_phone_value" value="#{contact.value}" preferred="ru">
        <o:validateAllOrNone components="contact_creation_form-contact_list-#{status.index}-contact_type contact_phone_value"/>
    </p:outputPanel>

    <p:outputPanel rendered="#{ne contact.category.equals(category.PHONE)}">
        <p:inputText id="contact_other_value" value="#{contact.value}"/>
        <o:validateAllOrNone components="contact_type contact_other_value"/>
    </p:outputPanel>
</ui:repeat>

...
现在,我为联系人类型输入了正确的id,但我发现了相同的异常:

异常消息:ValidateAllOne属性“components”必须引用 现有客户端ID。客户端ID 找不到“联系人创建表单列表2联系人类型”


我怎样才能解决这个问题呢?

我应该从另一边走。很容易获得复合组件的完整id,并在o:validateAllone处使用它。它解决了这个问题。在这种情况下,复合组件的正确id是触点\电话\值-contact\电话\值。之后,代码如下所示:

<ui:repeat value="#{bean.contacts}" var="contact">
    <p:selectOneMenu id="contact_type" value="#{contact.type}">
       ...
    </p:selectOneMenu>

    <p:outputPanel rendered="#{contact.category.equals(category.PHONE)}">
        <mycomponent:inputPhoneNumber id="contact_phone_value" value="#{contact.value}" preferred="ru">
        <o:validateAllOrNone components="contact_type contact_phone_value-contact_phone_value"/>
    </p:outputPanel>

    <p:outputPanel rendered="#{ne contact.category.equals(category.PHONE)}">
        <p:inputText id="contact_other_value" value="#{contact.value}"/>
        <o:validateAllOrNone components="contact_type contact_other_value"/>
    </p:outputPanel>
</ui:repeat>

...

你们也应该知道,我用“-”代替“:”作为id delimeter。

我应该从另一边走。很容易获得复合组件的完整id,并在o:validateAllone处使用它。它解决了这个问题。在这种情况下,复合组件的正确id是触点\电话\值-contact\电话\值。之后,代码如下所示:

<ui:repeat value="#{bean.contacts}" var="contact">
    <p:selectOneMenu id="contact_type" value="#{contact.type}">
       ...
    </p:selectOneMenu>

    <p:outputPanel rendered="#{contact.category.equals(category.PHONE)}">
        <mycomponent:inputPhoneNumber id="contact_phone_value" value="#{contact.value}" preferred="ru">
        <o:validateAllOrNone components="contact_type contact_phone_value-contact_phone_value"/>
    </p:outputPanel>

    <p:outputPanel rendered="#{ne contact.category.equals(category.PHONE)}">
        <p:inputText id="contact_other_value" value="#{contact.value}"/>
        <o:validateAllOrNone components="contact_type contact_other_value"/>
    </p:outputPanel>
</ui:repeat>

...
您还应该知道,我使用“-”代替“:”作为id delimeter