2015-02-18 4 views
1

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

Проблема в том, что я не знаю, как это сделать. В моем последнем вопросе Registration users in Hippo cms Я получил ответ, что мне нужно подключить компонент к/hippo: configuration/hippo: users.

Как это сделать?

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

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"); 

} 

Хотя импорт узел не работает

error: cannot find symbol 

Я также попытался

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

ответ

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(); 
      } 
     } 
    } 
} 

Теперь вы должны знать, что по умолчанию пользователь с которым сайт подключается к хранилищу не может иметь необходимые права на запись в эту папку. Возможно, вам захочется прочитать Access rights page for HST based writes, и если этого недостаточно, вам нужно будет изучить концепцию repository security and it's domains, чтобы изменить существующие домены в соответствии с вашими потребностями.

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

+0

так сложно, но спасибо за помощь :) – Chytry

+0

если ответ в порядке, не могли бы вы отметить вопрос как правильный? – Jeroen

Смежные вопросы