编辑如何将o:validateOrder和p:ajax与不在同一个panelGroup中的两个输入一起使用?
原始
我正在使用Omnifaces o:validateOrder将java.math.BigDecimal不能转换为java.lang.String,但仅当我在两个面板组上输入并且p:ajax处理两个输入的情况下。我仅将两个单独的面板组用于GUI布局。在o:validateOrder期间进行调试时,compareableValues数组的一个值为BigDecimal,另一个为字符串。
但是当我用ajax处理单个包裹两个输入的panelGroup时(例如p:ajax process="bothLengthsPanelGroup")
正常工作,并且compareableValues数组的两个值都为BigDecimals。但是GUI没有我想要的布局。我保持格式,但是BigDecimals中有p:ajax吗?
<h:panelGrid columns="2">
<h:panelGroup id="nlength">
<p:outputLabel value="Bolt Length" />
<h:panelGrid columns="3">
<h:outputLabel value="nominal:" />
<p:inputText size="1" id="bolt_length" value="#{cc.attrs.bolt.nominal_fastener_length}">
<p:ajax process="tlength nlength" update="nlength tlength boltFeedback" />
</p:inputText>
</h:panelGrid>
<o:validateOrder type="gt" components="bolt_length thread_length" message="Nominal Thread Length must not exceed Nominal Bolt Length" disabled="#{empty cc.attrs.bolt.nominal_fastener_length and empty cc.attrs.bolt.nominal_thread_length}" />
</h:panelGroup>
<h:panelGroup id="tlength">
<p:outputLabel value="Thread Length" />
<h:panelGrid columns="3">
<h:outputLabel value="nominal:" />
<p:inputText size="1" id="thread_length" value="#{cc.attrs.bolt.nominal_thread_length}">
<p:ajax process="tlength nlength" update="tlength nlength boltFeedback" />
</p:inputText>
</h:panelGrid>
<o:validateOrder type="gt" components="bolt_length thread_length" message="Nominal Thread Length must not exceed Nominal Bolt Length" disabled="#{empty cc.attrs.bolt.nominal_fastener_length and empty cc.attrs.bolt.nominal_thread_length}" />
</h:panelGroup>
</h:panelGrid>
答案 0 :(得分:1)
尝试一下...我只使用一个o:validate顺序并更改process =“ pnlLengths”即可处理整个DIV,而不会影响您的面板网格布局。
<h:panelGrid columns="2" id="pnlLengths">
<h:panelGroup id="nlength">
<p:outputLabel value="Bolt Length" />
<h:panelGrid columns="3">
<h:outputLabel value="nominal:" />
<p:inputText size="1" id="bolt_length" value="#{cc.attrs.bolt.nominal_fastener_length}">
<p:ajax process="pnlLengths" update="nlength tlength boltFeedback" />
</p:inputText>
</h:panelGrid>
</h:panelGroup>
<h:panelGroup id="tlength">
<p:outputLabel value="Thread Length" />
<h:panelGrid columns="3">
<h:outputLabel value="nominal:" />
<p:inputText size="1" id="thread_length" value="#{cc.attrs.bolt.nominal_thread_length}">
<p:ajax process="pnlLengths" update="tlength nlength boltFeedback" />
</p:inputText>
</h:panelGrid>
</h:panelGroup>
<o:validateOrder type="gt" components="bolt_length thread_length" message="Nominal Thread Length must not exceed Nominal Bolt Length" disabled="#{empty cc.attrs.bolt.nominal_fastener_length and empty cc.attrs.bolt.nominal_thread_length}" />
</h:panelGrid>