JSF f:convertNumber在面板中有效,但在对话框中无效

时间:2018-07-16 23:18:59

标签: java jsf primefaces java-7 jsf-2.2

对于2个<p:inputText>,每个包裹一个<f:convertNumber/>和一个<f:validateDoubleRange/>的代码几乎相同。我的<p:inputText id="applesInner".../>用最小/最大整数和小数位数以及拒绝字母(a-z)正确运行。但是,我的<p:inputText id="applesOutter"../>似乎完全忽略了<f:convertNumber/>。它接受字母,并允许数字使用过多的小数位数。我尝试消除对话框中的所有其他字段,并插入<h:form>并将<p:outputPanel id="dlgContent"/>括起来,但是它不起作用。验证会正确触发字母,输入(如2erf和224356),因此我知道此类输入将不允许进入数据库。有人对在对话框中成功使用的<f:convertNumber>有想法吗?我正在使用(JSF2.2,JDK7,Java EE6 Web和PrimesFaces 5.3)  代码如下:

谢谢

    <!-- code here that does a <ui:include/> of the code below -->

**my-training.xhtml**
<p:dialog id="exampleFileDlg" 
    header="This is for JSF"
    widgetVar="appleUploadFileDialog"
    >

    <p:outputPanel id="dlgContent"
        <iframe..../>
        <p:panel: id="reviewInfoPanel">
            <h:panelGrid columns="2">
                <h:outputLabel for="applesInner"  value="# of apples:"/>
                 <h:panelGroup>
                     <p:inputText id="applesInner" 
                                  value="#{fruitman.cart.numApples}"
                                  type="number"
                                  required="true" 
                                  placeholder="Apples between 0.1 and 99.9"
                                  requiredMessage="# Apples is required" 
                                  validatorMessage="Please enter a number between 0.1 and 99.9" 
                                  converterMessage="Apple # is not valid. Please enter a number between 0.1 and 99.9">
                         <f:convertNumber maxIntegerDigits="2"   
                                          minIntegerDigits="1"
                                          minFractionDigits="0"
                                          maxFractionDigits="1"
                                          groupingUsed="true"/>
                         <f:validateDoubleRange minimum="0.1" maximum="99.9"/>
                         <p:ajax event="blur" update="msgApplesInner"/>
                     </p:inputText>                        
                     <p:message id="msgApplesInner" for="applesInner"/>
                </h:panelGroup>        
            <h:panelGrid>
        </p:panel>   
    <p/:outputPanel>
</p:dialog> 


    <p:confirmDialog widgetVar="approveNumberOfApples" 
                     header="Approving Apples" message="Are you sure you want to approve this number of apples?" closable="false">
        <center>
            <h:panelGrid columns="2" styleClass="courseHeader" >
                <p:commandButton 
                    value="Yes" 
                    id="yesApproveApples"
                    actionListener="#{fruitman.cart.approveApples}"
                    onstart="PF('saveDlg').show();" 
                    oncomplete="PF('saveDlg').hide(); 
                                PF('appleUploadFileDialog').hide();"                                               
                    onclick="PF('approveNumberOfApples').hide();"/>

                <p:commandButton value="No"
                                 id="noApproveApples" 
                                 process="@this"                                          
                               onclick="PF('approveNumberOfApples').hide();"/>
            </h:panelGrid>
        </center>
    </p:confirmDialog>


<p:panel id="fruitWorksPanel">
    <h:panelGrid columns="3">
        <h:outputLabel for="applesOutter"  
                       value="# of CEUs:" style="font-weight:bold"/>
        <h:panelGroup>
            <p:inputText id="applesOutter" 
                         value="#{fruitman.cart.customer.numApples}"
                         type="number"
                         required="true" 
                         placeholder="Apples between 0.1 and 99.9"
                         requiredMessage="# Apples is required" 
                         validatorMessage="Please enter a number between 0.1 
                                           and 99.9" 
                         converterMessage="Apple # is not valid. Please enter
                                            a number between 0.1 and 99.9">
                         <f:convertNumber maxIntegerDigits="2"
                                          minIntegerDigits="1"
                                          maxFractionDigits="1"
                                          groupingUsed="true"/>
                         <f:validateDoubleRange minimum="0.1" 
                                                maximum="99.9"/>
            </p:inputText>
            <p:message id="msgApplesOuter" 
                       for="applesOutter"/>
        </h:panelGroup>

        <h:panelGroup layout="inline-block"/>
        <h:panelGroup layout="inline-block">
            <p:commandButton value="Submit" 
                             id="submitCEUBtn"
            </p:commandButton>
        </h:panelGroup>
        <br/>                                      
   </h:panelGrid>
</p:panel>

0 个答案:

没有答案