2017-10-09 53 views
0

我正在使用Docusign Java Rest客戶端庫。我有一個簡單的文本字段的服務器模板。我想從我的程序發送簽名請求,並在表單中填入預填充的數據,以便收件人不必填寫這些字段。Docusign複合模板預填充選項卡值

我的代碼片段:

EnvelopeDefinition envDef = new EnvelopeDefinition(); 
    envDef.setEmailSubject("ATTACHMENT TESTING"); 

    List<CompositeTemplate> compositeTemplates = new ArrayList<>(); 
    envDef.setCompositeTemplates(compositeTemplates); 

    CompositeTemplate t1 = new CompositeTemplate(); 

    List<ServerTemplate> serverTemplates = new ArrayList<>(); 
    t1.setServerTemplates(serverTemplates); 

    ServerTemplate st = new ServerTemplate(); 
    st.setSequence("1"); 
    st.setTemplateId("8as3232a-ea84-448d-852b-7617bf4d1759"); 
    serverTemplates.add(st); 

    CompositeTemplate t2 = new CompositeTemplate(); 

    List<InlineTemplate> inlineTemplates = new ArrayList<>(); 
    t2.setInlineTemplates(inlineTemplates); 

    InlineTemplate it = new InlineTemplate(); 
    it.setSequence("2"); 
    inlineTemplates.add(it); 

    Document doc = new Document(); 
    doc.setDocumentId("2"); 
    doc.setName("SSN Copy"); 
    doc.setRemoteUrl("https://images.pexels.com/photos/10656/c4f497772338464a5d4e4109966e02f7.jpg"); 
    doc.setFileExtension("jpeg"); 
    t2.setDocument(doc); 

    compositeTemplates.add(t1); 
    compositeTemplates.add(t2); 

    List<TemplateRole> templateRoles = new ArrayList<>(); 
    TemplateRole templateRole = new TemplateRole(); 

    templateRole.setRoleName("Customer"); 
    templateRole.setName(currentUser.getDisplayName()); 
    templateRole.setEmail(currentUser.getEmail()); 

    /********Prepopulating data to fields. 
    Tabs tabs = new Tabs(); 

    Text text1 = new Text(); 
    text1.setTabLabel("firstName"); 
    text1.setValue("Adams"); 
    tabs.getTextTabs().add(text1); 

    Text text2 = new Text(); 
    text2.setTabLabel("lastName"); 
    text2.setValue("Johnson"); 
    tabs.getTextTabs().add(text2); 

    templateRole.setTabs(tabs); 

    templateRoles.add(templateRole); 

    // assign template role(s) to the envelope 
    envDef.setTemplateRoles(templateRoles); 

    envDef.setStatus("sent"); 

    // instantiate a new EnvelopesApi object 
    EnvelopesApi envelopesApi = new EnvelopesApi(); 

    // call the createEnvelope() API 
    try { 
     EnvelopeSummary envelopeSummary = envelopesApi.createEnvelope(accountId, envDef); 
    } catch (ApiException e) { 
     e.printStackTrace(); 
    } 

但形式去給收件人,沒有我填寫任何價值。字段爲空。我做錯了嗎?請幫忙。

回答

1

您正在混合兩種不同的DocuSign設計模式,即不應混合使用Composite Template和TemplateRole。

如果您有一個服務器模板,並且想要預先填充應用程序中模板中存在的簽名者信息和/或任何DocuSign選項卡信息,則需要模板角色。

而複合模板可以做什麼templaterole設計可以做,在這一樣,如果你有多個服務器模板,並想用所有的人都在一個信封,那麼你需要的複合模板,或者它可以做很多其他的東西的你想要混合服務器模板和空中文件,那麼你需要複合模板。正確的複合模板示例如下:https://stackoverflow.com/a/20036349/3530898

對於您的情況,如果您只有一個服務器模板,並且只有您的服務器模板提供了信封的文檔,那麼您只需要用戶TemplateRole。我無法理解傳遞文檔SSN Copy的用途是什麼,是客戶需要簽名的文檔嗎?

+0

隨着服務器模板,我必須發送一些附件,如複製,護照(圖像)。這就是我將Text作爲內聯模板使用複合模板的原因。謝謝你的時間。請解釋如何實現這一點。 – J4Priyan

+0

在這種情況下,我應該在哪裏設置標籤集合? – J4Priyan

+0

謝謝阿米特。我通過你在答案中提供的鏈接找出了方法。抱歉,延遲將答案標記爲正確。 – J4Priyan