JSFが初めてです。私はBeanからイメージリストを取得するc:foreach要素を持っています。各画像リスト要素は、一時的なブール値フィールドを持つImageオブジェクト(私が作成)です。このフィールドは最初はfalseです。ブール値を表示するoutputTextもあります。ボタンをクリックするとブール値フィールドがtrueに設定され、outputTextが新しいブール値でリフレッシュされます。私は試みましたが、ブール値は常にfalseです。これは可能ですか?ブール値フィールドを設定するイメージのように、ブール値フィールドを取得する場所と同じでないか、foreach内のイメージ要素が更新されていないようです。内部:JPAエンティティのforeach set transientフィールドを取得して取得します。
JSFコード:
<c:forEach items="#{publicGalleryImageShowController.images}" var="img">
<h:form>
<h:commandButton
action="#{img.setShowComments(true)}"
value="Show/Hide">
<f:ajax render="co-#{img.id}" />
</h:commandButton>
</h:form>
<h:panelGroup id="co-#{img.id}">
<h:outputText value="#{img.showComments}" />
</h:panelGroup>
</c:forEach>
のJava ImageクラスJPA注釈付き:
@Entity
public class Image {
private boolean showComments;
/*other fields*/
@Transient
public boolean isShowComments() {
return showComments;
}
public void setShowComments(boolean showComments) {
this.showComments = showComments;
}
/*other getters and setters*/
}
今後のJSFに関するアドバイス:main()メソッドを備えたプレーンなバニラJavaアプリケーションを使用して問題が明らかにならない限り、[java]タグは使用しないでください。 [java]ユーザーは、JSFの質問を理解できる定義ではなく、JSFの質問をリストに表示することに関心のある定義でもありません。 – BalusC