を
<c:if>
と条件付き複合コンポーネントを使用しているとき、私は重複したIDの例外を取得。本当に
@Named
@SessionScoped
public class TestBean implements Serializable {
private boolean isVisible = false;
public void onSetItemVisible(AjaxBehaviorEvent e) {
this.isVisible = true;
}
public void onSetItemInvisible(AjaxBehaviorEvent e) {
this.isVisible = false;
}
public boolean isItemVisible() {
return this.isVisible;
}
}
A: 以下の3つの簡単なスニペット
を見てくださいセッションは、ブール値trueまたはfalseに、この値を変更する2人のAJAXのリスナーを保持しているTestBeanという名前のBeanをスコープtestCmpという名前の単純な複合コンポーネント:
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:cc="http://java.sun.com/jsf/composite">
<cc:interface/>
<cc:implementation>
<h:outputText id="text" value="text"/>
</cc:implementation>
</html>
そして非表示/笙を切り替えることができますビューページこの複合コンポーネントで
事は:私は重複したIDを取得私は表示/非表示を切り替えると例外です。 例外は言う:「コンポーネントID TESTFORM:TEST2:テキストはすでにビューで発見された」
それは「TEST2」...条件付きで追加されていないコンポーネントについて不平を言います。 私はコンポジットコンポーネントを使用せず、<h:outputText>
のような標準コンポーネントと置き換えると、何かうまく動作します。 エラーを再現するには、コンポジットコンポーネントが同じページで2回使用されていることが重要です。
さらに検索した後、私は私のような同じ問題があると思う別の人を見つけました。しかし、彼の例はもう少し複雑に見え、再現するのは難しいです。 Duplicate component ID in JSF using composite component twice in view
ここで何が起こっているのですか? Mojarra JSF 2.2.14を使用したJBoss EAP7です(ただし、JSF 2.3.0-m11でもテスト済み) 誰かがこの問題を確認できますか? もしそうなら、私はmojarrayの人のためのバグを作ります。
この動作を確認できる人はいませんか? 現在のjsf実装のバグであれば、私はそれを使用しても構いませんが、jira bugtrackerには何も見つかりませんでしたが、私は何か間違っているのか、JSFの基本を誤解しているのか分かりません。 – fmueller19
私はここにバグを作成しました:https://java.net/jira/browse/JAVASERVERFACES-4240 – fmueller19
これはgithubに移動されました:https://github.com/javaserverfaces/mojarra/issues/4244 –