代码之家  ›  专栏  ›  技术社区  ›  jeff

在两个面板组上使用p:ajax时,不能将Omnifaces ValidateOrder BigDecimal强制转换为字符串

  •  1
  • jeff  · 技术社区  · 6 年前

    edit How do I use o:validateOrder and p:ajax with two inputs not in the same panelgroup?

    原始

    我得到的java.math.bigdecimal不能使用omnifaces o:validateOrder转换为java.lang.string,但只适用于在两个面板组上有我的输入,p:ajax处理两个输入的情况。我使用两个单独的面板组仅用于GUI布局。在o:validateOrder期间进行调试,ComparableValues数组的一个值为BigDecimal,另一个值为字符串。

    但是当我使用Ajax进程时,一个包含两个输入的面板组(例如 p:Ajax process=“BothlengthSpanelGroup”). Things Work and the ComparableValues Array has both values as bigdecimals.但是图形用户界面没有我想要的布局。如何保持格式,但让p:ajax通过bigdecimals?

    <h:panelgrid columns=“2”>
    <h:panelgroup id=“nlength”>
    <p:outputLabel value=“螺栓长度”/>
    <h:panelgrid columns=“3”>
    <h:outputLabel value=“名义:”/>
    <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 exceed nominal bolt length”disabled=“empty cc.attrs.bolt.nominal_fastener_length and empty cc.attrs.bolt.nominal_thread length”/>gt;
    </h:panelgroup>
    
    <h:panelgroup id=“t长度”>
    <p:outputLabel value=“线程长度”/>
    <h:panelgrid columns=“3”>
    <h:outputLabel value=“名义:”/>
    <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 exceed nominal bolt length”disabled=“empty cc.attrs.bolt.nominal_fastener_length and empty cc.attrs.bolt.nominal_thread length”/>gt;
    </h:panelgroup>
    </h:panelgrid>
    

    =

    但是当我使用Ajax进程时,一个包含两个输入的面板组(比如p:ajax process="bothLengthsPanelGroup")工作正常,ComparableValues数组的两个值都是bigDecimals。但是图形用户界面没有我想要的布局。如何保持格式,但让p:ajax通过bigdecimals?

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

    enter image description here

    1 回复  |  直到 6 年前
        1
  •  1
  •   Melloware    6 年前

    尝试一下……我只使用了一个o:验证订单并更改进程“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>