2

我正在尝试使用 ATG 休息客户端调用 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.loginLogin,但似乎没有任何效果。所有组合都给出相同的形式例外。loginvalue.Login

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

4

2 回答 2

1

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

  • 价值.email
  • 值.密码
  • value.confirmPassword
  • value.firstName
  • 值.姓氏

此外,帮助是特定的value属性的数据类型需要是java.util.Dictionary

于 2014-10-13T18:38:30.780 回答
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>
于 2015-01-07T21:30:45.470 回答