ajax - 在两个面板组上使用 p:ajax 时,Omnifaces validateOrder BigDecimal 无法转换为字符串
问题描述
编辑如何将 o:validateOrder 和 p:ajax 与不在同一个 panelGroup 中的两个输入一起使用?
原来的
我无法使用 Omnifaces o:validateOrder 将 java.math.BigDecimal 转换为 java.lang.String,但仅适用于我的输入超过两个面板组且 p:ajax 处理两个输入的情况。我仅将两个单独的面板组用于 GUI 布局。在 o:validateOrder 期间进行调试时,可比较值数组的一个值是 BigDecimal,另一个是字符串。
但是,当我有 ajax 处理一个包含两个输入的单个 panelGroup 时(假设p:ajax process="bothLengthsPanelGroup")
一切正常,并且可比较值数组的两个值都为 BigDecimals。但是 GUI 没有我想要的布局。我怎样才能保持我的格式但有 p: BigDecimals中的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>
解决方案
试试这个...我只使用一个 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>
推荐阅读
- swift - 如何防止 URLComponents().port 在查询前添加问号(Swift/Xcode)
- algorithm - 如何找出一组point3D是否在同一平面上?
- ruby-on-rails - 使用预定义的对象值初始化多对多关系
- c# - 从 ViewModel 更改标签内容道具
- javascript - 如何使用 SAML 令牌获取 AWS 凭证?
- android - 玩游戏快照 vs firebase 数据库
- vba - 将多个值写入 .INI 文件中的单个键的格式是什么,VBA 中读取 INI 文件中键的所有值的读取语句是什么?
- java - Spring Data Cassandra - 创建一个带有选项值的表
- mongodb - 如何在mongodb中加入多个表
- android - Android Pie 和 WiFiManger.getScanResults() 返回空列表或 Android Oreo WiFiManger.startScan() 返回 false