<c:if>
복합 요소를 조건부로 사용할 때 중복 ID 예외가 발생합니다.이 컴파일/렌더링 시간 문제는 알고 있지만 아래 예제가 작동하지 않는 이유에 대해 실감하지 않았습니다. . 다음과 같은 세 가지 간단한 조각<c:if> 복합 요소 사용시 중복 ID 예외
에서 참조하시기 바랍니다 세션 범위 참 또는 거짓이 값을 변경 부울 값과 두 아약스 청취자 보유 TestBean라는 이름의 콩 :
@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;
}
}
정말를 간단한 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>
숨기기/SHO의 전환 허용하는 페이지 뷰 이 복합체 구성 요소
<h:body>
<h:form id="testForm">
<c:if test="#{testBean.itemVisible}">
<test:testCmp id="test1"/>
</c:if>
<p/>
<test:testCmp id="test2"/>
<p/>
<!-- show/hide dynamic item -->
<h:commandLink value="Show Item">
<f:ajax execute="@this" listener="#{testBean.onSetItemVisible}" render="@form"/>
</h:commandLink>
<br/>
<h:commandLink value="Hide Item">
<f:ajax execute="@this" listener="#{testBean.onSetItemInvisible}" render="@form"/>
</h:commandLink>
</h:form>
</h:body>
문제는 : 표시/숨기기간에 전환 할 때 중복 ID 예외가 발생합니다. 예외는 말한다 : "구성 요소 ID testForm : TEST2 : 텍스트가 이미 뷰에있다"
그것은 'TEST2'... 조건부 추가하지 않은 구성 요소에 대한 불평. 그리고 복합 구성 요소를 사용하지 않고 <h:outputText>
과 같은 표준 구성 요소로 바꾸면 아무 문제가 없습니다. 오류를 재현하려면 복합 구성 요소가 동일한 페이지에서 두 번 사용되며 조건없이 한 번만 반복하고 다른 번은 사용하지 않는 것이 중요합니다.
추가 검색 후에 나는 나 같은 문제가 있다고 생각하는 다른 사람을 찾았습니다. 그러나 그의 예는 좀 더 복잡해 보이며 재현하기가 더 어렵습니다. 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 –