여기에는 매우 간단한 시나리오가 있습니다. 그러나 복합 컴포넌트와 f : attribute 태그에 어떻게 든 달라 붙었습니다. 가능한 한 간단하게 코드를 유지하려고 노력할 것입니다.복합 컴포넌트 내에서 f : attribute 사용
복합 구성 요소 :
<cc:interface name="button">
...
<cc:attribute
name="actionListener"
required="true"
method-signature="void f(javax.faces.event.ActionEvent)"
target="button"
shortDescription="The action listener for this button." />
...
</cc:interface>
<cc:implementation>
<ice:commandButton
...
actionListener="#{cc.attrs.actionListener}"
...>
<cc:insertChildren />
</ice:commandButton>
</cc:implementation>
은 ... 지금 우리는 다음과 같이 구성 요소를 사용
<ctrl:button
...
actionListener="#{bean.method}"
...>
<f:attribute name="objectId" value="#{someObject.id}" />
</ctrl:button>
이제 우리는 액션 청취자 방법 내부의 "OBJECTID"속성에 액세스해야합니다. 우리는 이미 다음과 같이 어떤 것을 시도했다.
public void method(ActionEvent event)
{
...
event.getComponent().getAttributes().get("objectId");
...
}
그러나 속성 맵에는 objectId가 포함되어 있지 않다. 이 접근법에 문제가 있습니까? 이 문제를 해결하기 위해 권장되는 방법은 무엇입니까?
누군가가 우리를 도울 수 있다면 좋을 것입니다.
감사합니다. SlimShady
안녕하세요 @BalusC :) 현재 JSF 2로 마이그레이션 중이며 비슷한 문제가 있습니다.나는 두 가지 질문을 가지고있다 :'f : setPropertyActionListener'는 타겟을 필요로하고 스펙 TLD는 태그의'name' 속성을 나열하지 않으므로'target'을 의미할까요? – truemmer
@truemmer : Copypaste 실수, 예 :) 해결했습니다. – BalusC
두 번째 질문을 편집하기에는 너무 느리다 .-) 다음 질문은 두 번째 해결 방법에 관한 것입니다. 복합 컴포넌트 인터페이스에서 "target"도 제공하는 "action"이라는 속성이 있어야합니다. 맞습니까? JSF 2 스펙에서 조치 메소드에 매개 변수가 필요하지 않은 이유는 무엇입니까? 이 모든 것을 여기에 보내 주셔서 고마워요. – truemmer