2016-08-02 4 views
0

Omnifaces skipValidatorsタグをPrimefaces ajaxイベントで使用するのに問題があります。基本的には、selectOneMenuの選択に基づいてフォーム内の多くの要素を更新する必要がありますが、既に入力された値を保持してフォームを検証しないようにする必要もあります。しかし、私はそれを働かせることはできません。ここでは、問題の小さなデモだ:Primefaceを持つすべてのskipValidators ajax

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> 

testBean:

@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によって何のアスタリスクはありません。いずれかのコンソール値を選択すると、ページが正しく変更され、 reqFieldの横にアスタリスクが表示されます。ただし、コンソール値を選択した後、メニューから[Select One]を再度選択すると、検証エラーが表示されます。

私が正しく理解していれば、o:skipValidatorsは検証が行われないようにすべきです。何が起きてる?

Iはshowcaseで述べたように、タグはUICommand又はClientBehaviorHolderコンポーネントの内部に配置されなければならないomnifaces 2.3とprimefaces 5.1.12

答えて

0

を使用しています。あなたは<p:ajax>の中に入れました。外に出すと<p:selectOneMenu>which is a ClientBehaviorHolderの子になります。

<p:selectOneMenu ...> 
    ... 
    <p:ajax ... /> 
    <o:skipValidators /> 
</p:selectOneMenu> 
関連する問題