2012-03-16 5 views
4

프로젝트에서 다른 구성 요소 안에 복합 구성 요소를 사용합니다. 다 보스 7.1.0에 잘 작동하지만, JBoss에서의 7.1.1 우리는이 같은 오류를 얻을 : 우리는 솔루션 this JBoss community thread에 제안했지만, 그것은 우리의 문제 (이음매에 아무것도 변경되지 JBoss 7.1.1에서 중첩 된 복합 구성 요소가 깨졌습니다.

No handlers found for exception javax.faces.view.facelets.TagException: 
/resources/components/my/bigComponent.xhtml @21,47 <my:nestedComponent> 
Tag Library supports namespace: http://java.sun.com/jsf/composite/components/my, 
but no tag was defined for name: nestedComponent 

우리는 the only one in this case이 아니며 템플릿 파일의 ui:define 태그에 있기 때문에 솔루션이 작동하지 않을 수도 있습니다. 여기

우리의 두 가지 구성 요소 :

중첩 :

<!DOCTYPE html PUBLIC ...> 
<html xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:cc="http://java.sun.com/jsf/composite" 
    xmlns:my="http://java.sun.com/jsf/composite/components/my" > 

<cc:interface componentType="..."> 
    <h:panelGroup> 
     <cc:attribute name="someAttribute" /> 
    </h:panelGroup> 
</cc:interface> 

<cc:implementation> 
    <my:nestedComponent content="a text" /> 
</cc:implementation> 
</html> 

중첩 :

<!DOCTYPE html PUBLIC ...> 
<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:attribute name="content" /> 
</cc:interface> 

<cc:implementation> 
    <h:outputText value="#{cc.attrs.content}" /> 
</cc:implementation> 

</html> 

가 회귀인가? 우리가 뭔가 잘못하고있는거야? 1 링크에서, 제안 된 솔루션은 다음과 같이 중첩 구성 요소 뭔가 의미 :이 composite:facet은 대한 composite:renderFacet없이 무엇

<composite:interface> 
    <composite:facet name="greet1"/> 
    <composite:facet name="greet2"/> 
</composite:interface> 
<composite:implementation> 
    <lib:greet1 name="Stan" /> 
    <lib:greet2 name="Silvert" /> 
</composite:implementation> 

입니까?

+0

사용중인 JSF 구현? MyFaces 2.1.6/2.0.12 복합 구성 요소에는 슬래시가있는 라이브러리 이름을 포함 할 수 없기 때문에주의하십시오. 라이브러리 이름이 'components/my'이며 올바르지 않습니다. 자세한 내용은 [MYFACES-3454] (https://issues.apache.org/jira/browse/MYFACES-3454)를 참조하십시오. – lu4242

+0

우리는 JBoss 7.1.1에서 제공하는 Primefaces 3.2와 Mojarra 버전을 사용하고 있습니다. 우리는 항상 마지막 JBoss 버전까지는 이런 종류의 라이브러리 이름을 아무 문제없이 사용했습니다. –

답변

9

Valentinx in this thread 해결 방법을 찾았습니다.

아이디어는 너무

<!DOCTYPE html PUBLIC ...> 
<html xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:cc="http://java.sun.com/jsf/composite" 
    xmlns:my="http://java.sun.com/jsf/composite/components/my" > 
<cc:interface /> 
<cc:implementation> 
    <my:nestedComponent content="a text" /> 
</cc:implementation> 
</html> 

<!DOCTYPE html PUBLIC ...> 
<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 xmlns:my="http://java.sun.com/jsf/composite/components/my"> 
    <my:nestedComponent content="a text" /> 
</cc:implementation> 
</html> 

이이처럼 작동

합니다 (<cc:implementation xmlns:my="http://java.sun.com/jsf/composite/components/my"> 태그를 통지)하게는 <composite:implementation> 자체에 결함이있는 네임 스페이스 선언을 넣어하는 것입니다 매력!

+0

감사합니다. 정보, 버그 보고서 : https://issues.jboss.org/browse/AS7-4366 –

+0

버그 보고서를 보내 주셔서 감사합니다. 직접 해봐야합니다 :) –

+1

와우, 자극적이지만 정보에 대한 감사 - 거대한 도움, 나는 2 일을 잃어 버렸을 것이다. –

0

답에 대한 사비에 감사드립니다. 바로 그럴 것입니다! 나는 코멘트를 추가하고 싶었지만 담당자는 가지고 있지 않았다. 하기 위해서. 내 경우

이 문제는 오류 템플릿 (안 복합 : 구현)와, 약간의 차이가, 내가 < CC가 포함되지 않은 솔루션을 찾을 대신 구현 >을 ...

을, XMLNS 이동 : 컨테이너에 <HTML>에서 템플릿 layoutComp를 ('DIV'모두와 '스팬'일) :

<span xmlns:layoutComp="http://java.sun.com/jsf/composite/layoutComp"> 
     <layoutComp:navigation /> 
</span> 
관련 문제