Подключение к репозиторию Hippo cms

Я все еще пытаюсь добраться до репозитория, чтобы добавить новых пользователей. Мой компонент подключен к стороне, и у меня есть все необходимые значения в FormMap.

Проблема в том, что я не знаю, как это сделать. На мой последний вопрос Регистрация пользователей в Hippo cms я получил ответ, что мне нужно подключить компонент к /гиппопотам:конфигурация/гиппопотам:пользователи.

Как сделать?

Это мой фактический компонент:

package org.example.components;
import javax.jcr.Session;

import org.hippoecm.hst.component.support.bean.BaseHstComponent;
import org.hippoecm.hst.core.component.HstComponentException;
import org.hippoecm.hst.core.component.HstRequest;
import org.hippoecm.hst.core.component.HstResponse;
import org.hippoecm.hst.component.support.forms.FormMap;
import org.hippoecm.hst.component.support.forms.FormUtils;
import org.hippoecm.hst.component.support.forms.FormField;
import org.hippoecm.hst.content.annotations.Persistable;
import org.hippoecm.hst.content.beans.Node;
import org.hippoecm.hst.content.beans.standard.HippoFolderBean;


public class SignUpComponent extends BaseHstComponent {

@Override
public void doBeforeRender(HstRequest request, HstResponse response) {
    super.doBeforeRender(request, response);
}

@Persistable
@Override
public void doAction(HstRequest request, HstResponse response) throws HstComponentException {
    FormMap map = new FormMap(request, new String[]{"username","email","password"});
    FormField username = map.getField("username");
    FormField password = map.getField("password");
    FormField email = map.getField("email");

    try {
        // NOTE: This session will be logged out automatically in the normal HST request processing thread.
        Session persistableSession = request.getRequestContext().getSession();
    } catch (Exception e) {

    }
    Node users = persistableSession.getNode("/hippo:configuration/hippo:users");

}

Хотя импорт Node не работает

error: cannot find symbol

я тоже пробовал

Node users = getSiteContentBaseBean(request).getNode().getSession().getRootNode().getNode("/hippo:configuration/hippo:users"); 

person Chytry    schedule 18.02.2015    source источник


Ответы (1)


Для сохранения изменений в документе работает следующий код. Я немного изменил его в соответствии с вашим примером.

import javax.jcr.Node;
import javax.jcr.RepositoryException;
import javax.jcr.Session;

import org.hippoecm.hst.component.support.bean.BaseHstComponent;
import org.hippoecm.hst.core.component.HstComponentException;
import org.hippoecm.hst.core.component.HstRequest;
import org.hippoecm.hst.core.component.HstResponse;
import org.hippoecm.repository.api.HippoNodeType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class PersistenceExampleComponent extends BaseHstComponent {

    public static final Logger log = LoggerFactory.getLogger(PersistenceExampleComponent.class);
    public static final String USERS_PATH = "/hippo:configuration/hippo:users";

    @Override
    public void doAction(final HstRequest request, final HstResponse response) throws HstComponentException {
        Session writableSession = null;
        try {
            writableSession = this.getPersistableSession(request);
            Node usersNode = writableSession.getRootNode().getNode(USERS_PATH);
            final Node someusername = usersNode.addNode("someusername", HippoNodeType.NT_USER);
            writableSession.save();
        } catch (RepositoryException e) {
            log.error(e.getMessage());
        } finally {
            if(writableSession != null) {
                writableSession.logout();
            }
        }
    }
}

Теперь нужно знать, что по умолчанию пользователь, с которым сайт подключается к репозиторию, может не иметь должных прав на запись в эту папку. Вы можете прочитать Страница прав доступа для записей на основе HST, и если этого недостаточно, вам нужно будет изучить концепцию безопасность репозитория и его домены, чтобы изменить существующие домены в соответствии с вашими потребностями.

Вы также можете взглянуть на следуйте фрагменту кода, который является примером того, как хранить информацию из компонента в хранилище.

person Jeroen    schedule 19.02.2015
comment
если ответ в порядке, не могли бы вы отметить вопрос как правильный? - person Jeroen; 26.02.2015