複合コンポーネントの送信に問題があります。
私の複合コンポーネントのほとんどには、入力コンポーネントと「送信」ボタンの両方が含まれています。同じ複合コンポーネントではなく同じ h:form にボタンを配置しようとすると、送信された値がどこかで「失われた」ように見えました。たとえば、私のバリデーターは元の値で呼び出されました。
例 :
<composite:interface>
<composite:attribute name="titreContext" required="true"/>
</composite:interface>
<composite:implementation>
<p:outputPanel id="selectionTitreDetailsPanel" styleClass="selectionTitreDetails">
<p:outputPanel id="selectionTitreDetailsPanelInner" rendered="#{not empty cc.attrs.titreContext.selected}">
<p:panelGrid columns="2" id="panelId">
<h:outputText id="idLabel" value="Id :"/>
<h:outputText id="id" value="#{cc.attrs.titreContext.selected.titeluid}"/>
<p:tooltip for="id" value="Identifiant unique"/>
</p:panelGrid>
<p:panelGrid columns="2" id="titelePanel">
<p:outputLabel for="selectTitele" value="Titre :"/>
<p:selectOneMenu id="selectTitele" value="#{cc.attrs.titreContext.selected.titele}" effect="fold" styleClass="fullWidth">
<f:selectItems value="#{constants.getTitelesForTypman(cc.attrs.titreContext.selected.titele.typman)}" var="titele" itemLabel="#{titele.titelelil}" itemValue="#{titele}" styleClass="fullWidth"/>
<p:column styleClass="fullWidth">#{titele.titelelil}</p:column>
</p:selectOneMenu>
</p:panelGrid>
[...]
<p:commandButton id="confirmerModifications" icon="small_edit" type="submit" value="Confirmer les modifications"
action="#{elutersEditionContext.confirmeModifsSelection}" process="mandatsTerritorial"
update="mandatsTerritorial #{cc.attrs.notifUpdates}"/>
</composite:implementation>
動作します。
しかし、 p:commandButton をコンポジットから外します:
<h:form>
<mylib:mycomponent /*parameters *//>
<p:commandButton /*parameters*/ />
</h:form>
動作しません。バリデーターをデバッグすると、変更された値が送信されていないことがわかります。getLocalValue、getSubmittedValue、getValue のいずれも変更されません。
この状況を修正するために使用する複合コンポーネント宣言の構文はありますか? ところで、カスタム コンポーネントではなく複合コンポーネントとしてコンポーネントを作成していたとき、バッキング Bean で #{asen} を取得するだけで機能しました。
前もって感謝します。
私は使っている :
- プライムフェイス 3.4.1
- CODI 1.0.5
- OpenWebBeans 1.1.6
- マイフェイス 2.1.9
- トムキャット 7.0.32
(更新) この非常に奇妙な問題は、h:form のネストによって引き起こされました。
h:form のネスティングは複合コンポーネントの最初のレベルの処理に影響を与えませんでしたが、ネストされた複合でこの奇妙な「入力損失」が発生したため、非常に奇妙です。
ネスティングは次のようになります。
<h:form>
...
<p:tabView ...>
<p:tab>
<h:form>
<my:composite ....>
</h:form>
</p:tabView>
</h:form>