当我将ChildPanel添加到页面时,我收到一条错误,指出:
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. [Form [Component id = myForm]]
2. [DropDownChoice [Component id = referenceType]]
3. [TextField [Component id = referenceNumber]]
4. [CheckBox [Component id = referenceReqChk]]
5. [ [Component id = saveRefNumButton]]
6. [ [Component id = cancelRefNumButton]]
at org.apache.wicket.Page.checkRendering(Page.java:693)
at org.apache.wicket.Page.onAfterRender(Page.java:849)
at org.apache.wicket.markup.html.WebPage.onAfterRender(WebPage.java:213)
at org.apache.wicket.Component.afterRender(Component.java:950)
at …Run Code Online (Sandbox Code Playgroud) 注意:在花费的时间远远超过我想要找到原因的时间之后,以简短的形式添加这个问题.希望我能拯救别人一些痛苦.
将方法调用委托给带EJB注释的方法时@Singleton,容器会抛出一个Exception:
TransactionRolledbackLocalException Client's transaction aborted
Run Code Online (Sandbox Code Playgroud)
Singleton bean没有数据访问.
ServiceBeanImpl.java
@Stateless
@Local
public class ServiceBean extends BaseBean{
@EJB private CacheService cacheService;
public FooObj getFooFromCache(int id) {
FooObj fooObj = (FooObj) cacheService.get(id);
if (fooObj == null) {
fooObj = getEntityById(FooObj.class, id);
cacheService.put(id, fooObj); //This throws exception
}
return cacheService.get(id);
}
}
Run Code Online (Sandbox Code Playgroud)
CacheServiceImpl.java
@Singleton
@Startup
public class CacheServiceImpl implements CacheService {
private Cache cache;
@PostConstruct
public void init() {
CacheManager instance = CacheManager.getInstance();
cache = instance.getCache("cache");
}
@PreDestroy
public …Run Code Online (Sandbox Code Playgroud) 我知道有几种方法可以做到这一点,但我正在寻找最好的方法(我是Wicket的新手).
在下面的HTML代码中,我标记了2个需要替换一些虚拟文本的区域.有问题的文字是{APP_TITLE}和{PAGE_TITLE}.我只想用简单的字符串替换它们.
题
首先<div>,在不丢失DIV内的内容和当前定义div的属性(以及将来添加的属性)的情况下,替换这些值的最佳方法是什么?
<html lang="en">
<head>
<!-- Replace here -->
<title>{APP_TITLE} - {PAGE_TITLE}</title>
</head>
<body>
<!-- Replace here -->
<div class="corpAppTemplate" corp:app="{APP_TITLE}" corp:title="{PAGE_TITLE}">
<ul class="corpAppMenu" wicket:id="MenuList">
</ul>
<span wicket:id="UserID">UserID</span>
<wicket:child/>
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud) 尝试做类似的事情:
public interface Order {
public List<? extends OrderItem> getItems();
public void setItems(List<? extends OrderItem> items);
}
public interface OrderItem {
// stuff
}
public class OrderItemImp implements OrderItem {
// stuff for class impl
}
public class OrderImp implements Order {
public List<OrderItemImp> getItems() {
return items;
}
public void setItems(List<OrderItemImp> items) {
this.items = items;
}
}
Run Code Online (Sandbox Code Playgroud)
编译器抱怨setItems方法.我怎样才能做到这一点?谢谢.