2013-04-15 3 views
0

Мне нужно получить записи DDL через запрос json. Ядро Liferay не имеет такого сервиса. Только getRecordSet.Liferay: как добавить новый метод JSONWebService

Я пишу DDLRecordSetService Hook, чтобы добавить новый метод getRecords(recordSetId). мой код:

public class ExtDDLRecordSetLocalServiceImpl extends DDLRecordSetServiceWrapper { 


    public ExtDDLRecordSetLocalServiceImpl(DDLRecordSetService ddlRecordSetService) { 
     super(ddlRecordSetService); 
    } 

    public com.liferay.portlet.dynamicdatalists.model.DDLRecordSet getRecordSet(long recordSetId) throws com.liferay.portal.kernel.exception.PortalException, com.liferay.portal.kernel.exception.SystemException{ 

     System.out.println("------override getRecordSet "); 
     DDLRecordSet set = super.getRecordSet(recordSetId+10); 
     return set; 
    } 

    @JSONWebService 
    public List<DDLRecord> getRecords(long recordSetId) throws SystemException, PortalException { 
     System.out.println("------override getRecords"); 
     return getRecordSet(recordSetId).getRecords(); 
    } 

} 

я могу переопределить getRecordSet(), но я не доступ к getRecordSet() метод с помощью URL.

я получаю:

{"exception":"No JSON web service action associated with path /ddlrecordset/get-records and method GET for /"} 

Как я могу добавить новый DDLRecordSetService, что может вернуть мне набор записей с помощью JSONWebService?

ответ

1

Встроенные службы JSON для DDL богаче, чем просто установить запись. Попробуйте указать браузер на странице api веб-службы вашего портала. После входа в систему,

/API/jsonws

Есть 7 методов на DDLRecord и более 8 для DDLRecordSet.

Мне кажется, что стандартный API будет соответствовать вашим потребностям.

Если оказывается иначе, то ...

методы веб-службы JSON создаются, когда служба строитель запускается. Это обратное проектирует ваши методы в правильные объекты для JSON, SOAP и так далее.

Поскольку вы никогда не запускаете сервис-конструктор, обратное проектирование никогда не произойдет. Я сомневаюсь, что запуск SB для вашего крюка на основных источниках Liferay - это то, что вы имеете в виду (и это было бы нецелесообразно в любом случае, imo.)

Мое предложение состояло в том, чтобы создать собственный сервис с Service Builder и таким образом, создайте свой собственный API для объектов службы, которые вы пытаетесь открыть. См. Также this question

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