GWT请求工厂
使用GWT 2.5.1,我得到以下错误:GWT请求工厂,gwt,proxy,fetch,setter,requestfactory,Gwt,Proxy,Fetch,Setter,Requestfactory,使用GWT 2.5.1,我得到以下错误: com.google.web.bindery.requestfactory.server.UnexpectedException: Could not locate setter for property cptdossier in type org.nit.persistance.entites.Tllog 我觉得我误解了如何使用主键,但我不知道如何修复它 此时,我正在点击一张桌子,它应该会打开一个充满细节的窗口。 当它尝试在以下步骤中获取reque
com.google.web.bindery.requestfactory.server.UnexpectedException: Could not locate
setter for property cptdossier in type org.nit.persistance.entites.Tllog
我觉得我误解了如何使用主键,但我不知道如何修复它
此时,我正在点击一张桌子,它应该会打开一个充满细节的窗口。
当它尝试在以下步骤中获取request.to时,这种情况会发生
private void fetchAndEdit() {
Request<TllogProxy> fetchRequest = requestFactory.createTllogRequest().find(tllog.getId(), tllog.getDatecre());
fetchRequest.with(editorDriver.getPaths());
fetchRequest.to(new Receiver<TllogProxy>() {
@Override
public void onSuccess(TllogProxy tllog) {
TllogEditorWorkflow.this.tllog = tllog;
TllogRequest context = requestFactory.createTllogRequest();
edit(context);
context.persist(tllog);
}
}).fire();
}
TllogPK扩展了BaseTllogPK,它的代码是
public abstract class BaseTllogPK implements Serializable {
private static final long serialVersionUID = 1L;
protected int hashCode = Integer.MIN_VALUE;
private java.lang.String metier;
private java.lang.String sitegeo;
private java.lang.String cptdossier;
private java.lang.Integer numligne;
public BaseTllogPK () {}
public BaseTllogPK (
java.lang.String metier,
java.lang.String sitegeo,
java.lang.String cptdossier,
java.lang.Integer numligne
) {
this.setMetier(metier);
this.setSitegeo(sitegeo);
this.setCptdossier(cptdossier);
this.setNumligne(numligne);
}
+ getters and setters
Tllog代理
@ProxyFor(value = Tllog.class, locator = TllogLocator.class)
public interface TllogProxy extends ValueProxy
{
Integer getEtafin();
void setEtafin(Integer etafin);
TllogPKProxy getId();
void setId(TllogPKProxy id);
Date getDatecre();
void setDatecre(Date datecre);
String getUtilcre();
void setUtilcre(java.lang.String utilcre);
Date getDatemod();
void setDatemod(java.util.Date datemod);
String getUtilmod();
void setUtilmod(java.lang.String utilmod);
Long getMessage();
void setMessage(java.lang.Long message);
String getFmb();
void setFmb(java.lang.String fmb);
String getMsgtxt();
void setMsgtxt(java.lang.String msgtxt);
String getDbmserrtext();
void setDbmserrtext(java.lang.String dbmserrtext);
}
TllogPK的代理
@ProxyFor(value = TllogPK.class, locator = TllogLocator.class)
public interface TllogPKProxy extends ValueProxy
{
String getCptdossier ();
void setCptdossier (java.lang.String cptdossier);
String getMetier ();
void setMetier (java.lang.String metier);
Integer getNumligne ();
void setNumligne (java.lang.Integer numligne);
String getSitegeo ();
void setSitegeo (java.lang.String sitegeo);
}
差点忘了映射文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="org.nit.persistance.entites">
<class name="Tllog" table="TL_LOG" rowid="rowid">
<meta attribute="sync-DAO">false</meta>
<composite-id name="id" class="TllogPK">
<key-property name="metier" column="TL_METIER" type="string"/>
<key-property name="sitegeo" column="TL_SITEGEO" type="string"/>
<key-property name="cptdossier" column="TL_CPTDOSSIER" type="string"/>
<key-property name="numligne" column="TL_NUMLIGNE" type="integer"/>
</composite-id>
<property name="etafin" column="TL_ETAFIN" type="integer"/>
<property name="datecre" column="TL_DATECRE" type="timestamp"/>
<property name="utilcre" column="TL_UTILCRE" type="string" length="20" update="false"/>
<property name="datemod" column="TL_DATEMOD" type="timestamp"/>
<property name="utilmod" column="TL_UTILMOD" type="string" length="20" insert="false"/>
<property name="xmlbase" column="XML_BASE" type="org.nit.data.HibernateXMLType"/>
<property name="xmlcanvas" column="XML_CANVAS" type="org.nit.data.HibernateXMLType"/>
<property name="message" column="TL_MESSAGE" type="long"/>
<property name="fmb" column="TL_FMB" type="string"/>
<property name="msgtxt" column="MSGTXT" type="string"/>
<property name="dbmserrtext" column="DBMSERRTEXT" type="string"/>
</class>
</hibernate-mapping>
错误的
TllogLocator
import java.util.Date;
import com.google.web.bindery.requestfactory.shared.Locator;
import org.nit.persistance.entites.Tllog;
import org.nit.persistance.entites.TllogPK;
public class TllogLocator extends Locator<Tllog, TllogPK>
{
@Override
public Tllog create (Class<? extends Tllog> clazz)
{
return new Tllog();
}
@Override
public Tllog find (Class<? extends Tllog> clazz, TllogPK id)
{
return CEMTllog.fetch(id, null);
}
@Override
public Class<Tllog> getDomainType ()
{
return Tllog.class;
}
@Override
public TllogPK getId (Tllog tllog)
{
return tllog.getId();
}
@Override
public Class<TllogPK> getIdType ()
{
return TllogPK.class;
}
@Override
public Object getVersion (Tllog tllog)
{
return new Date();
}
}
import java.util.Date;
导入com.google.web.bindery.requestfactory.shared.Locator;
导入org.nit.persistence.entites.Tllog;
导入org.nit.persistence.entites.TllogPK;
公共类TllogLocator扩展了定位器
{
@凌驾
公共Tllog create(ClassLooks OK。此错误消息通常非常可靠,除了…是否有任何其他类(带有代理)扩展包含“cptdossier”的基类?如果您不提供,GWT会给出这条毫无帮助的消息。例如,ProxyX和ProxyY扩展了ProxyB。ProxyB声明了一些未在PojoY中实现的方法。遗憾的是,在这种情况下,错误消息没有提到PojoY。感谢您如此快速地回复salk31。经过调查,TllogPK是唯一扩展BaseTLogPK only定位器cl的实体ass是一样的。不知道这是否相关,但我只是在线程中添加了定位代码。Tks公共类TllogLocator扩展了定位程序如果有东西扩展了TllogPKProxy,那么它就更重要了…为了避免坏的请求工厂让代理和pojo类层次结构有所不同。它在抱怨Tllog,尽管这很可能是TllogProxy类层次结构。如果我添加了混淆,请原谅。不要这样做,因为您为我指明了正确的方向。我确实将TllogPK更改为@ProxyFor(value=TllogPK.class,locator=TllogPKLocator.class)。显然,我创建了一个TllogPKLocator,信不信由你,它正在工作。
import java.util.Date;
import com.google.web.bindery.requestfactory.shared.Locator;
import org.nit.persistance.entites.Tllog;
import org.nit.persistance.entites.TllogPK;
public class TllogLocator extends Locator<Tllog, TllogPK>
{
@Override
public Tllog create (Class<? extends Tllog> clazz)
{
return new Tllog();
}
@Override
public Tllog find (Class<? extends Tllog> clazz, TllogPK id)
{
return CEMTllog.fetch(id, null);
}
@Override
public Class<Tllog> getDomainType ()
{
return Tllog.class;
}
@Override
public TllogPK getId (Tllog tllog)
{
return tllog.getId();
}
@Override
public Class<TllogPK> getIdType ()
{
return TllogPK.class;
}
@Override
public Object getVersion (Tllog tllog)
{
return new Date();
}
}