我尝试使用ATG rest客户端调用ProfileFormHandler创建句柄,如下所示。
mSession = RestSession.createSession(mHost, mPort,"kim@example.com","password");
mSession.setUseHttpsForLogin(false);
mSession.login();
Map<String,Object> params = new HashMap<String,Object>();
params.put("value.login", "buddha@oracle.com");
params.put("value.email", "buddha@oracle.com");
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.login
,Login
,login
,value.Login
等,但似乎没有任何效果。所有组合都给出相同的形式例外。
如何使用ATG REST Client调用ATG表单处理程序并将参数传递给它?
答案 0 :(得分:1)
当然需要更多信息但是查看你的代码我可以看到你有一个value.login
没有配置ootb并且相信这会导致NPE。假设您尚未自定义ootb ATG RegistrationFormHandler和存储库中的必填字段,则需要传递给表单处理程序的唯一值是:
此外,帮助特定于value
属性的数据类型必须为java.util.Dictionary
答案 1 :(得分: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>