JSF / Richfaces重新渲染而不是调用验证

时间:2014-04-15 09:31:31

标签: validation jsf jsf-2 richfaces

我有一个JSF / Richfaces页面,其中包含一个包含许多组件的表单。 其中一些组件是必需的,因此必需属性设置为true。

我有一个commandButton(C1),它调用服务器操作。根据服务器操作的结果,填充类型为h:selectOneMenu(F1)的字段。此字段是必填字段,其值可由用户手动选择或通过服务器操作填充。

在表单F1中没有值的情况下提交表单时出现问题。当然,验证失败并显示错误消息“value is required”(或者requiredMessage属性的值)。如果用户然后执行服务器操作,则使用返回的值填充F1字段并重新执行该字段。但是,似乎验证没有在客户端执行,并且该字段仍然显示为错误。即使用户手动选择了一个值,该字段仍然显示为无效。 我一直在网上搜索,但找不到类似的情况。

以下是我页面的一些摘录:

<a:region>
    <s:decorate id="alField" template="#{template}">
    <ui:define name="label">Al</ui:define>
        <h:inputTextarea id="al" maxlength="75"   valueChangeListener="#{aEntHome.clearFields}" 
            requiredMessage="Required" required="true"  value="#{aEntHome.instance.al}" >
            <f:validator validatorId="stringNotEmtyTrimmedValidator" />
            <a:support event="onblur" reRender="F1Field"  bypassUpdates="true" />                   
        </h:inputTextarea>

    <a:commandButton value="Search" image="img.GIF" id="searchImg" 
        action="#{lSearch.search}" reRender="F1Field,alField">
    </a:commandButton>
</s:decorate>
</a:region>

<s:decorate id="F1Field" template="#{template}">
  <ui:define name="label">F1</ui:define>
  <h:selectOneMenu value="#{aEntHome.instance.f1}"    required="true"  >
    <s:selectItems value="#{listH.f1List}" var="_c" label="#{_c.f1Code}(#{_c.f1Name})"  />  
    <s:convertEntity />             
  </h:selectOneMenu>    
</s:decorate>

这是用于显示字段的模板:

<ui:composition  xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:s="http://jboss.com/products/seam/taglib">

    <div class="prop">

    <s:label styleClass="longName #{invalid?'errors':''}">
        <ui:insert name="label"/>
        <s:span styleClass="required" rendered="#{required}">*</s:span>
    </s:label>


    <span class="value #{invalid?'errors':''}">
        <s:validateAll>
            <ui:insert/>
        </s:validateAll>
    </span>

    <span class="error">
        <h:graphicImage value="/img/error.gif" rendered="#{invalid}" styleClass="errors"/>
        <s:message styleClass="errors"/>
    </span>
    </div>
</ui:composition>

有人可以建议这段代码可能出现什么问题吗?

只是为了澄清 - 我正在使用Richfaces 3.3.1

我真的很感激有关导致这种情况的任何线索。

0 个答案:

没有答案