Announcement

Collapse
No announcement yet.
X
  • Filter
  • Time
Clear All
new posts

    Bug: Missing fields when use drag-copying and dynamic field include

    Hello,

    I currently evaluating the smartgwt enterprise edition (3.1d) and got tried to use dynamic field include combined with drag-copy.

    These are my classes:
    Code:
    @Entity
    @Table(name = "attribute")
    public class Attribute {
    
    	@Id
    	@Column(nullable = false)
    	@GeneratedValue(strategy = GenerationType.IDENTITY)
    	private Long id;
    	private String value;
    	@ManyToOne
    	private AttributeDefinition definition;
    
    /* ... getter and setter ... */
    Code:
    @Entity
    @Table(name="attribute_definition")
    public class AttributeDefinition{
    
    	@Id
    	private  String name;
    	private  String type;
    
    /* ... getter and setter ... */
    and the DatasourceDefinitions:
    Code:
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <DataSource ID="attribute"
                serverType="hibernate"
                dropExtraFields="true"
                beanClassName="test.Attribute">
        <fields>
            <field name="id" type="sequence" primaryKey="true" />
            <field name="value" type="text"/>
            <field name="definition" required="true" canEdit="true" foreignKey="attributeDefinition.name"/>
        </fields>
    </DataSource>
    Code:
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <DataSource
            ID="attributeDefinition"
            serverType="hibernate"
            dropExtraFields="true"
            beanClassName="test.AttributeDefinition"
            >
        <fields>
            <field name="name" type="text" primaryKey="true"/>
            <field name="type" type="text" />
        </fields>
    </DataSource>
    And the EntryPoint (copied and modified from http://www.smartclient.com/smartgwte...ase/#form_copy). I added one ListGridField with setIncludeFrom:

    Code:
    public class Entry implements EntryPoint {
    
    	public void onModuleLoad() {
    
    		final ListGrid attributeDefinition = new ListGrid();
    		attributeDefinition.setDataSource(DataSource.get("attributeDefinition"));
    		attributeDefinition.setCanDragRecordsOut(true);
    		attributeDefinition.setDragDataAction(DragDataAction.COPY);
    		attributeDefinition.setAlternateRecordStyles(true);
    		attributeDefinition.setAutoFetchData(true);
    		attributeDefinition.setFields( new ListGridField("name"), new ListGridField("type"));
    
    		final ListGrid attribute = new ListGrid();
    		attribute.setDataSource(DataSource.get("attribute"));
    		attribute.setCanAcceptDroppedRecords(true);
    		attribute.setCanRemoveRecords(true);
    		attribute.setAlternateRecordStyles(true);
    		attribute.setAutoFetchData(true);
    		attribute.setAutoFetchTextMatchStyle(TextMatchStyle.EXACT);
    		[b]ListGridField type = new ListGridField("type");
    		type.setIncludeFrom("attributeDefinition.type");[/b]
    		attribute.setFields( new ListGridField("id"), new ListGridField("value"),  new ListGridField("definition"), type);
    
    		HLayout mainLayout = new HLayout();
    		mainLayout.setWidth100();
    		mainLayout.setHeight100();
    		mainLayout.addMember(attributeDefinition);
    		mainLayout.addMember(attribute);
    
    		mainLayout.draw();
    
    	}
    Now if I drag a attributeDefinition to the attribute grid, the field "type" is empty. After reloading the grid the field is populated as expected.

    Here is the server log for the drag operation:
    Code:
    === 2012-09-20 00:50:29,215 [80-1] INFO  RequestContext - URL: '/test/sc/IDACall', User-Agent: 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:10.0.2) Gecko/20100101 Firefox/10.0.2': Moz (Gecko) with Accept-Encoding header
    === 2012-09-20 00:50:29,216 [80-1] DEBUG IDACall - Header Name:Value pair: host:127.0.0.1:8080
    === 2012-09-20 00:50:29,216 [80-1] DEBUG IDACall - Header Name:Value pair: user-agent:Mozilla/5.0 (Windows NT 6.1; WOW64; rv:10.0.2) Gecko/20100101 Firefox/10.0.2
    === 2012-09-20 00:50:29,216 [80-1] DEBUG IDACall - Header Name:Value pair: accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    === 2012-09-20 00:50:29,217 [80-1] DEBUG IDACall - Header Name:Value pair: accept-language:de,de-de;q=0.7,en;q=0.3
    === 2012-09-20 00:50:29,217 [80-1] DEBUG IDACall - Header Name:Value pair: accept-encoding:gzip, deflate
    === 2012-09-20 00:50:29,217 [80-1] DEBUG IDACall - Header Name:Value pair: connection:keep-alive
    === 2012-09-20 00:50:29,217 [80-1] DEBUG IDACall - Header Name:Value pair: content-type:application/x-www-form-urlencoded; charset=UTF-8
    === 2012-09-20 00:50:29,217 [80-1] DEBUG IDACall - Header Name:Value pair: referer:http://127.0.0.1:8080/index.html?gwt.codesvr=127.0.0.1:9997
    === 2012-09-20 00:50:29,219 [80-1] DEBUG IDACall - Header Name:Value pair: content-length:1017
    === 2012-09-20 00:50:29,219 [80-1] DEBUG IDACall - Header Name:Value pair: cookie:GLog=%7B%0D%20%20%20%20left%3A960%2C%20%0D%20%20%20%20top%3A0%2C%20%0D%20%20%20%20width%3A942%2C%20%0D%20%20%20%20height%3A921%2C%20%0D%20%20%20%20priorityDefaults%3A%7B%0D%20%20%20%20%20%20%20%20Log%3A4%0D%20%20%20%20%7D%2C%20%0D%20%20%20%20defaultPriority%3A4%2C%20%0D%20%20%20%20trackRPC%3Atrue%0D%7D; isc_cState=ready; JSESSIONID=65F1CA2528F94458B9789A87FDCDE111
    === 2012-09-20 00:50:29,221 [80-1] DEBUG IDACall - Header Name:Value pair: pragma:no-cache
    === 2012-09-20 00:50:29,221 [80-1] DEBUG IDACall - Header Name:Value pair: cache-control:no-cache
    === 2012-09-20 00:50:29,221 [80-1] DEBUG IDACall - session exists: 65F1CA2528F94458B9789A87FDCDE111
    === 2012-09-20 00:50:29,221 [80-1] DEBUG IDACall - remote user: null
    === 2012-09-20 00:50:29,224 [80-1] DEBUG XML - Parsed XML from (in memory stream): 2ms
    === 2012-09-20 00:50:29,227 [80-1] DEBUG RPCManager - Processing 1 requests.
    === 2012-09-20 00:50:29,230 [80-1] DEBUG RPCManager - Request #1 (DSRequest) payload: {
        values:{
            name:"bar",
            type:"boolean",
            definition:"bar"
        },
        operationConfig:{
            dataSource:"attribute",
            operationType:"add"
        },
        componentId:"isc_ListGrid_1",
        appID:"builtinApplication",
        operation:"attribute_add",
        oldValues:{
            name:"bar",
            type:"boolean",
            definition:"bar"
        },
        criteria:{
        }
    }
    === 2012-09-20 00:50:29,233 [80-1] INFO  IDACall - Performing 1 operation(s)
    === 2012-09-20 00:50:29,233 [80-1] DEBUG DeclarativeSecurity - Processing security checks for DataSource null, field null
    === 2012-09-20 00:50:29,233 [80-1] DEBUG DeclarativeSecurity - DataSource attribute is not in the pre-checked list, processing...
    === 2012-09-20 00:50:29,233 [80-1] DEBUG AppBase - [builtinApplication.attribute_add] No userTypes defined, allowing anyone access to all operations for this application
    === 2012-09-20 00:50:29,233 [80-1] DEBUG AppBase - [builtinApplication.attribute_add] No public zero-argument method named '_attribute_add' found, performing generic datasource operation
    === 2012-09-20 00:50:29,235 [80-1] INFO  HibernateDataSource - [builtinApplication.attribute_add] Performing add operation with
    	criteria: {name:"bar",type:"boolean",definition:"bar"}	values: {name:"bar",type:"boolean",definition:"bar"}
    === 2012-09-20 00:50:29,256 [80-1] DEBUG HibernateTransaction - [builtinApplication.attribute_add] Started new transaction "1559411372"
    Hibernate: 
        select
            attributed0_.name as name1_,
            attributed0_.type as type1_ 
        from
            attribute_definition attributed0_ 
        where
            attributed0_.name=?
    Hibernate: 
        insert 
        into
            attribute
            (definition_name, value) 
        values
            (?, ?)
    === 2012-09-20 00:50:29,263 [80-1] DEBUG RPCManager - Content type for RPC transaction: text/plain; charset=UTF-8
    === 2012-09-20 00:50:29,264 [80-1] INFO  HibernateTransaction - Attempting to commit 1 database update(s)
    === 2012-09-20 00:50:29,264 [80-1] DEBUG HibernateTransaction - Committing transaction "1559411372"
    === 2012-09-20 00:50:29,299 [80-1] DEBUG RPCManager - non-DMI response, dropExtraFields: true
    === 2012-09-20 00:50:29,302 [80-1] INFO  Compression - /test/sc/IDACall: 171 -> 151 bytes
    === 2012-09-20 00:54:27,000 [80-1] INFO  Download - Returning 304: Not modified on conditional get of: C:\Projekte\test\smartgwtee-3.0p\samples\test\out\artifacts\test_war_exploded\test\sc\skins\Enterprise\images\ListGrid\sort_descending.png
    I think the problem is, that the add-operation has no property "additionalOutputs" so the response to this request doesn't include these dynamic fields.

    #2
    are there plans to support this usecase?

    Comment

    Working...
    X