对于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>