複合コンポーネントがあります
<co:interface>
<co:attribute name="editAction" required="false" targets="edit" method-signature="java.lang.String f()"/>
<co:attribute name="saveAction" required="false" targets="save" method-signature="java.lang.String f()"/>
<co:attribute name="isBrowseModus" required="true"/>
<co:attribute name="user" required="true"/>
<co:attribute name="editListener" targets="edit" method-signature="void f(javax.faces.event.ActionEvent)" />
<co:actionSource name="save"/>
</co:interface>
<co:implementation>
............
<p:inplace id="inpLand" editor="true"
toggleable="#{not cc.attrs.isBrowseModus}"
style="#{cc.attrs.isBrowseModus ? 'color: black' : 'color: blue'}">
<p:inputText value="#{cc.attrs.user.land}" label="text"/>
</p:inplace>
...........
<c:if test="#{cc.attrs.isBrowseModus}">
<p:commandButton id="edit" value="#{msgs.co_userdata_button_edit}" icon="ui-icon-unlocked" actionListener="#{cc.attrs.editListener}"/>
</c:if>
実際には、この複合コンポーネントは、myData.xhtml を呼び出すビューによって呼び出されます。
<h:form id="dataForm">
<mc:UserData user="#{dataBean.user}"
isBrowseModus="#{dataBean.browseModus}"
saveAction="#{dataBean.save}"
editListener="#{dataBean.editActionListener}">
</mc:UserData>
</h:form>
私の目的は何ですか:その複合コンポーネント内で、ユーザーは「編集」ボタンをクリックしてユーザーデータを変更できます。PRIMEFACES の inplace タグを使用することを好みます。編集ボタンをクリックすると、変更可能なすべてのフィールドが青色で表示されます (複合コンポーネントを参照)。
私の問題は、 isBrowseModusフラグ (cc 属性として定義) を falseに更新する方法がわからないことです。実際にはeditActionListener (managedBean で定義) 内で実行しますが、残念ながら結果はありません。
管理対象 Bean (dataBean) からの抽出:
....
public boolean isBrowseModus() {
return browseModus;
}
public void setBrowseModus(boolean browseModus) {
this.browseModus = browseModus;
}
public void editActionListener(ActionEvent event) {
browseModus = false;
FacesContext.getCurrentInstance().renderResponse();
}
....
私は JSF に 1 か月前から取り組んでいるので、JSF にはあまり詳しくありません。おそらく、この結果を達成するためのより便利な方法があります。しかし、残念ながら方法がわかりません。この問題を解決するのを手伝ってくれる人はいますか?
よろしくお願いします。よろしく、ボードー