Java 无法转换客户端值';空';返回到服务器端对象
这个问题是关于Java 无法转换客户端值';空';返回到服务器端对象,java,tapestry,Java,Tapestry,这个问题是关于Tapestry组件的问题 我正在寻找一个解决这个问题的解决方案,而不是任何解决方法或替代方法,即如何实现这个接口 考虑Tapestry表单上的ajaxformloop元素: … getItems()类内方法返回持久化对象和尚未持久化的新添加项(其中包含nullid)的合成组合(Listinterface) 提交表单时,我收到以下错误: 无法将客户端值“null”转换回服务器端对象 此错误发生在SuccessFromSave()方法(save是提交链接的id)之前 我想知道,如
Tapestry
组件的问题
我正在寻找一个解决这个问题的解决方案,而不是任何解决方法或替代方法,即如何实现这个接口
Tapestry
表单上的ajaxformloop
元素:
…
getItems()
类内方法返回持久化对象和尚未持久化的新添加项(其中包含null
id)的合成组合(List
interface)无法将客户端值“null”转换回服务器端对象
save
是提交链接的id)之前
我想知道,如何使用ajaxformloop
管理这些未持久化的对象以防止此类错误。实际上,我想在我的onSucceCFrom…()
方法中保存这些项(以DB为单位)
我错过了什么?实际上,我错过了我的
ajaxformloop
容器的自定义ValueEncoder
。此组件的默认编码器产生的上述错误
自定义编码器的设置方式如下:
其中itemcoder
是java类中的@Property
注释字段:
@Property
private ValueEncoder<MyItem> itemEncoder = new ValueEncoder<MyItem>() {
@Override
public String toClient(MyItem value) {
return value.id != null ? value.id.toString() : "";
}
@Override
public MyItem toValue(String clientValue) {
if (clientValue != null && !clientValue.isEmpty()) {
Long id = Long.parseLong(clientValue);
return (MyItem) session.get(MyItem.class, id);
}
return new MyItem();
}
};
@属性
私有ValueEncoder itemEncoder=新的ValueEncoder(){
@凌驾
客户端的公共字符串(MyItem值){
返回value.id!=null?value.id.toString():“”;
}
@凌驾
公共MyItem toValue(字符串clientValue){
if(clientValue!=null&&!clientValue.isEmpty()){
Long id=Long.parseLong(clientValue);
return(MyItem)session.get(MyItem.class,id);
}
返回新的MyItem();
}
};
实际上,我错过了我的ajaxformloop
容器的自定义ValueEncoder
。此组件的默认编码器产生的上述错误
自定义编码器的设置方式如下:
其中itemcoder
是java类中的@Property
注释字段:
@Property
private ValueEncoder<MyItem> itemEncoder = new ValueEncoder<MyItem>() {
@Override
public String toClient(MyItem value) {
return value.id != null ? value.id.toString() : "";
}
@Override
public MyItem toValue(String clientValue) {
if (clientValue != null && !clientValue.isEmpty()) {
Long id = Long.parseLong(clientValue);
return (MyItem) session.get(MyItem.class, id);
}
return new MyItem();
}
};
@属性
私有ValueEncoder itemEncoder=新的ValueEncoder(){
@凌驾
客户端的公共字符串(MyItem值){
返回value.id!=null?value.id.toString():“”;
}
@凌驾
公共MyItem toValue(字符串clientValue){
if(clientValue!=null&&!clientValue.isEmpty()){
Long id=Long.parseLong(clientValue);
return(MyItem)session.get(MyItem.class,id);
}
返回新的MyItem();
}
};