値が現在空またはnullの場合、基本的に2つの入力フィールドIが表示されます。そうでなければ、私はoutputTextを表示します。これらの2つの値は、Longオブジェクトに格納されている通貨の値であり、データを正しく表示するためにコンバーターを使用します(PrimeFaces 5.3を使用しているので、PrimeFacesのinputNumberは使用できません)。JSFでコンバーターとajaxを使用してフィールドを更新する方法
<c:set var="edtVal1" value="#{bean.val1 ne null and bean.val1 ne 0}" scope="request" />
<c:set var="edtVal2" value="#{bean.val2 ne null and bean.val2 ne 0}" scope="request" />
<p:panelGrid>
<p:row>
<p:column colspan="2">
<p:messages id="mainMessages" globalOnly="false" autoUpdate="true" showDetail="true" />
</p:column>
</p:row>
<!-- [...] -->
<p:row>
<p:column styleClass="col-quarter col-label2">
<h:outputText value="value 1" />
</p:column>
<p:column styleClass="col-quarter col-value2" rendered="#{edtVal1}">
<h:outputText id="val1Output" value="#{bean.val1}" converter="myConverter" />
</p:column>
<p:column styleClass="col-quarter" rendered="#{not edtVal1}">
<p:inputText id="val1Input" value="#{bean.val1}" converter="myConverter">
<p:ajax update="mainMessages val1Input" event="change" />
</p:inputText>
</p:column>
</p:row>
<p:row>
<p:column styleClass="col-quarter col-label2">
<h:outputText value="value 2" />
</p:column>
<p:column styleClass="col-quarter col-value2" rendered="#{edtVal2}">
<h:outputText id="val1Output" value="#{bean.val2}" converter="myConverter" />
</p:column>
<p:column styleClass="col-quarter" rendered="#{not edtVal2}">
<p:inputText id="val1Input" value="#{bean.val2}" converter="myConverter">
<p:ajax update="mainMessages val1Input" event="change" />
</p:inputText>
</p:column>
</p:row>
</p:panelGrid>
私はこのようにそれを置くとき、コンバータによってスローされたメッセージが表示されますが、フィールドのどれも更新されません:私の問題は次のようです。私は両方の入力/出力オプションの同じブール変数を使用する場合は、これと同様に(両方でedtVal2
を使用する1rstデータ列のrendered
属性で使用される変数を変更):
<p:row>
<p:column styleClass="col-quarter col-label2">
<h:outputText value="value 1" />
</p:column>
<p:column styleClass="col-quarter col-value2" rendered="#{edtVal1}">
<h:outputText id="val1Output" value="#{bean.val1}" converter="myConverter" />
</p:column>
<p:column styleClass="col-quarter" rendered="#{not edtVal1}">
<p:inputText id="val1Input" value="#{bean.val1}" converter="myConverter">
<p:ajax update="mainMessages val1Input" event="change" />
</p:inputText>
</p:column>
</p:row>
、第1フィールドの更新成功と2度目はまだ動作しません。
フォーマッティングされたデータを表示するためにコンバータを使用することは私が既に行った回避策であり、期待どおりに機能し、以前と同じコンバータを使用します。しかし、今回は、なぜ動作していないのか分かりません。
この問題を再現するためにはコンバータが重要ですが、カスタムコンバータがその役割を果たしているようです。
あなたのタイトルを真剣に改善する必要があります... [尋ねる]を読んで、良いタイトルを書く方法に関する提案が含まれています。そして、[mcve]とhttp://www.stackoverflow.com/tags/jsf/infoを読んでください。 – Kukeltje
質問はかなり長いですが、それは最小です:私の問題はぼやけた原因があり、私は2時間それを解決しようとした。私はこの質問が特に質問を可能な限り正確に定式化するために努力して、下降気味に値するとは思わない。 – Sirmyself
しかし、最初の「panelgrid」と第2の「panelgrid」の違いを説明するテキストを追加する必要があります。違いを見つけるのを手伝ってくれる人達に任されており、それは[mcve]ではありません;-) – Kukeltje