개찰구에 일종의 장식 요소를 구현할 수 있습니까? 장식 된 부품의 이드를 특별히 기리는 동안? Wicket의 장식 요소 구성 요소
<wicket:border>
<a wicket:id="link"><wicket:body/></a>
</wicket:border>
MyBorder.html
public XXXPage()
{
MyBorder border = new MyBorder("xxx");
border.add(new Label("xxx", "Foo")); // label just as simplification. Its really a Component that we want to surround the anchor (linkify) around.
add(border);
}
XXXPage.html
<body>
<span wicket:id="xxx"/>
</body>
: 감안할 때
:
현재 내가이 국경 구성 요소가 장식 역할을 사용하여 해결하려고
MyBorde r.java
public MyBorder(String id)
{
super(id);
AjaxLink link = new AjaxLink("link")
{
@Override public void onClick(AjaxRequestTarget arg0)
{
}
};
add(link);
link.add(getBodyContainer()); // from javadoc of Wicket's Border
}
을 제공합니다 :
org.apache.wicket.WicketRuntimeException: The component(s) below failed to render. A common problem is that you have added a component in code but forgot to reference it in the markup (thus the component will never be rendered).
1. [Component id = xxx]
at org.apache.wicket.Page.checkRendering(Page.java:1182)
그래서 본질적으로, XXX의 구성 요소는 링크 구성 요소 투명하게 포장되어야한다. 이 xxx는 통제 할 수 없습니다. 는 "바나나 개찰구"구현에서
이 가능한 의사 코드가 될 것이다 : 나는 당신이 아무것도 ..이 두보다 당신의 ListView 내 WebMarkupContainer 또는 조각 중 하나를 추가하는 더 나은 운이 거라고 생각
Component wrapWithAction(Component a) {
// now wrap
Link b = new Link() {
// handle link onClick and all that
}
b.wrap(a);
return b;
}
//
마지막 스 니펫에 대한 참고 사항 : 구성 요소 b는 a의 구성 요소 ID를 다시 만들어야합니다. (따라서 "투명"포장) –