В GWT 2.1.1 свойства Id и Version могут относиться к любому типу, который RequestFactory умеет передавать. По сути, любой примитивный тип (int
), упакованный тип (Integer
) или любой объект, который имеет связанный тип Proxy. Вам не нужно самостоятельно уменьшать составной идентификатор до строки; сантехника RF может автоматически позаботиться о составных ключах, используя постоянный идентификатор ключа типа объекта или сериализованное состояние ключа типа значения.
Используя ранее опубликованный пример:
interface Location {
public String getDepartment();
public String getDesk();
}
interface Employee {
public Location getId();
public int getVersion();
}
@ProxyFor(Location.class)
interface LocationProxy extends ValueProxy {
// ValueProxy means no requirement for getId() / getVersion()
String getDepartment();
String getDesk();
}
@ProxyFor(Employee.class)
interface EmployeeProxy extends EntityProxy {
// Use a composite type as an id key
LocationProxy getId();
// Version could also be a complex type
int getVersion();
}
Если вы не можете сократить идентификатор до одного свойства getId()
в типе домена, вы можете использовать Locator
для предоставления внешнего идентификатора и свойства версии. Например:
@ProxyFor(value = Employee.class, locator = EmployeeLocator.class)
interface EmployeeProxy {.....}
class EmployeeLocator extends Locator<Employee, String> {
// There are several other methods to implement, too
String getId(Employee domainObject) { return domainObject.getDepartment() + " " + domainObject.getDesk(); }
}
DevGuide, связанный с вопросом, немного устарел в отношении изменений RequestFactory. в версии 2.1.1
person
BobV
schedule
10.02.2011