2014-10-09 24 views
2

我正在嘗試使用ATG rest客戶端調用ProfileFormHandler的創建句柄,如下所示。如何使用ATG REST客戶端調用formhandler

mSession = RestSession.createSession(mHost, mPort,"[email protected]","password"); 
mSession.setUseHttpsForLogin(false); 
mSession.login(); 

Map<String,Object> params = new HashMap<String,Object>(); 
params.put("value.login", "[email protected]"); 
params.put("value.email", "[email protected]"); 
params.put("value.password", "password"); 

RestResult result = RestComponentHelper.executeMethod("/atg/userprofiling/ProfileFormHandler","create",null,params,mSession); 

我收到表單異常,說我沒有通過登錄和密碼字段。

["Missing value for the required property Password", 
"Missing value for the required property Login name"] 

我嘗試登錄名和密碼字段的所有組合像value.loginLoginloginvalue.Login等,但似乎沒有任何工作。所有組合都給出相同的形式例外。

如何使用ATG REST客戶端調用ATG表單處理程序並將參數傳遞給它?

+0

我與我的問題提到RegistrationFormHandler一起的意思。 – Buddha 2014-10-11 18:44:45

+0

你使用什麼版本的ATG? – bated 2014-10-13 16:10:05

+0

另請提供您的userProfile.xml的摘錄以及您對ootb RegistrationFormHandler所做的任何自定義。 – bated 2014-10-13 20:15:29

回答

1

絕對需要更多的信息,但看着你的代碼我可以看到你有一個value.login這是沒有配置OOTB,並認爲這是導致NPE。假設你沒有定製開箱即用ATG RegistrationFormHandler和所需的字段中存儲庫,你需要傳遞給表單處理程序的值只有:

  • value.email
  • value.password
  • value.confirmPassword
  • value.firstName
  • value.lastName

此外,幫助是特定的數據類型的value財產必須java.util.Dictionary

+0

我已經使用了CRS formhandler,我正在使用ATG的11.1版本。在進一步的實驗中,我使用ProfileFormHandler及其handleCreate來避免任何自定義。現在我沒有收到任何空指針異常,但是我收到了表明我沒有傳遞密碼和登錄字段的表單異常。即使我通過他們。 – Buddha 2014-10-14 05:30:50

+0

你有沒有關注[這些](http://docs.oracle.com/cd/E24152_01/Platform.10-1/ATGWSFrameGuide/html/s1601invokingformhandlers01.html)說明? – bated 2014-10-14 20:32:48

+0

這些指令涉及直接傳遞JSON請求。我們可以使用ATG REST客戶端傳遞JSON文本嗎?我找不到與此相關的任何說明。 – Buddha 2014-10-15 13:45:58

0

添加以下/atg/rest/security/restSecurityConfiguration.xml

<resource component="/atg/userprofiling/ProfileFormHandler" secure="false"> 
     <method name="handleCreate" secure="false"> 
      <acl value="EVERYONE:read,write,execute" /> 
     </method> 
     <property name="value.login" secure="false" /> 
     <property name="value.password" secure="false" /> 
    </resource>