如何使用ATG REST Client调用formhandler

时间:2014-10-09 17:18:06

标签: rest atg oracle-commerce

我尝试使用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.loginLoginloginvalue.Login等,但似乎没有任何效果。所有组合都给出相同的形式例外。

如何使用ATG REST Client调用ATG表单处理程序并将参数传递给它?

2 个答案:

答案 0 :(得分:1)

当然需要更多信息但是查看你的代码我可以看到你有一个value.login没有配置ootb并且相信这会导致NPE。假设您尚未自定义ootb ATG RegistrationFormHandler和存储库中的必填字段,则需要传递给表单处理程序的唯一值是:

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

此外,帮助特定于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>