2016-07-26 3 views
0

私はそれぞれ最小、可能性、最大値を持つアイテムのコレクションを持っています。最大値が最小値よりも大きいことを確認するバリデーターがあります。バリデーターはユーザーが入力した3つの値をすべて比較できるようにバインディングを使用します。もともと、彼らはui:repeatにいましたが、それはドロップダウンで問題を引き起こしていました。私はc:forEachへの切り替えが見つかりました。残念なことに、それはまたバインディングを台無しにしています。私はui:repeatに戻らずにそれらを修正する方法があることを望んでいます。c:forEachのバインディング

c:forEachにバインディングを設定することはできますか?バインディングにidまたはvarStatusインデックスを追加する方法はありますか?リスト内のすべての項目について同じではありませんか?例えば下の例では、

<h:inputText id="impactMin_#{impact.id}" binding="#{impactMin_#{impact.id}}"> 
<h:inputText id="impactMin_#{impact.id}" binding="#{impactMin}_#{impact.id}"> 

のようなものを試しましたが、それはうまくいきません。誰かがこれを行う賢明な方法を知っているなら、私はそれを聞いて非常に感謝しています。

これは、コードの簡易版である:一般的なバインディングのより良い理解を取得しようとしますが

<c:forEach id="impacts" var="impact" items="#{mybean.impacts}" varStatus="i"> 
    <h:panelGroup layout="block" id="impactContainer_#{impact.id}"> 
     <h:outputText value="#{impact.score_impact_type_idInterface.score_impact_type_name}"/> 
     <h:panelGroup layout="block" class="row form-group" id="impactAssessment_#{impact.id}"> 
      <h:panelGroup layout="block"> 
       <h:inputText id="impactMin" value="#{impact.current_impact_min}" binding="#{impactMin}" label="Minimum"> 
        <f:attribute name="impactMl" value="#{impactMl}"/> 
        <f:attribute name="impactMax" value="#{impactMax}"/> 
        <f:convertNumber locale="#{loginInfo.realLocale}" minIntegerDigits="1" maxFractionDigits="2" /> 
        <f:validator binding="#{impactMinValidator}"/> 
       </h:inputText> 
      </h:panelGroup> 
      <h:panelGroup layout="block"> 
       <h:inputText id="impactMl" value="#{impact.current_impact_ml}" binding="#{impactMl}" label="Most likely"> 
        <f:attribute name="impactMin" value="#{impactMin}"/> 
        <f:attribute name="impactMax" value="#{impactMax}"/> 
        <f:convertNumber locale="#{loginInfo.realLocale}" minIntegerDigits="1" maxFractionDigits="2" /> 
        <f:validator binding="#{impactLikelyValidator}"/> 
       </h:inputText> 
      </h:panelGroup> 
      <h:panelGroup layout="block"> 
       <h:inputText id="impactMax" value="#{impact.current_impact_max}" binding="#{impactMax}" label="Maximum"> 
        <f:attribute name="impactMin" value="#{impactMin}"/> 
        <f:attribute name="impactMl" value="#{impactMl}"/> 
        <f:convertNumber locale="#{loginInfo.realLocale}" minIntegerDigits="1" maxFractionDigits="2" /> 
        <f:validator binding="#{impactMaxValidator}"/> 
       </h:inputText> 
      </h:panelGroup> 
      <div class="col-sm-12"> 
       <h:message for="impactMin"/> 
       <h:message for="impactMl"/> 
       <h:message for="impactMax"/> 
      </div> 
     </h:panelGroup> 
    </h:panelGroup> 
</c:forEach> 

答えて

0

、私はこの答えJSF 2 composites and binding for validationを見つけました。 forEachのをこのように:

<c:forEach id="impacts" var="impact" items="#{mybean.impacts}" varStatus="i"> 
    <h:panelGroup layout="block" id="impactContainer_#{impact.id}"> 
     <h:outputText value="#{impact.score_impact_type_idInterface.score_impact_type_name}"/> 
     <h:panelGroup layout="block" class="row form-group" id="impactAssessment_#{impact.id}"> 
      <ui:param name="impactMin" value="impactMin_#{impact.id}" /> 
      <ui:param name="impactMl" value="impactMl_#{impact.id}" /> 
      <ui:param name="impactMax" value="impactMax_#{impact.id}" /> 
      <h:panelGroup layout="block"> 
       <h:inputText id="impactMin_#{impact.id}" value="#{impact.current_impact_min}" binding="#{requestScope[impactMin]}" label="Minimum"> 
        <f:attribute name="impactMl" value="#{requestScope[impactMl]}"/> 
        <f:attribute name="impactMax" value="#{requestScope[impactMax]}"/> 
        <f:convertNumber locale="#{loginInfo.realLocale}" minIntegerDigits="1" maxFractionDigits="2" /> 
        <f:validator binding="#{impactMinValidator}"/> 
       </h:inputText> 
      </h:panelGroup> 
      <h:panelGroup layout="block"> 
       <h:inputText id="impactMl_#{impact.id}" value="#{impact.current_impact_ml}" binding="#{requestScope[impactMl]}" label="Most likely"> 
        <f:attribute name="impactMin" value="#{requestScope[impactMin]}"/> 
        <f:attribute name="impactMax" value="#{requestScope[impactMax]}"/> 
        <f:convertNumber locale="#{loginInfo.realLocale}" minIntegerDigits="1" maxFractionDigits="2" /> 
        <f:validator binding="#{impactLikelyValidator}"/> 
       </h:inputText> 
      </h:panelGroup> 
      <h:panelGroup layout="block"> 
       <h:inputText id="impactMax_#{impact.id}" value="#{impact.current_impact_max}" binding="#{requestScope[impactMax]}" label="Maximum"> 
        <f:attribute name="impactMin" value="#{requestScope[impactMin]}"/> 
        <f:attribute name="impactMl" value="#{requestScope[impactMl]}"/> 
        <f:convertNumber locale="#{loginInfo.realLocale}" minIntegerDigits="1" maxFractionDigits="2" /> 
        <f:validator binding="#{impactMaxValidator}"/> 
       </h:inputText> 
      </h:panelGroup> 
      <div class="col-sm-12"> 
       <h:message for="impactMin_#{impact.id}"/> 
       <h:message for="impactMl_#{impact.id}"/> 
       <h:message for="impactMax_#{impact.id}"/> 
      </div> 
     </h:panelGroup> 
    </h:panelGroup> 
</c:forEach> 

注UI:PARAMビットを上部付近なく、かなり同じことが、私はそれがCに適合させることができました。それはトリックを行うようだ。ありがとうBalusC!

関連する問題