Foren

Utilização de Query no método Search do DLAppServiceImpl (JSONWS)

ALBERTO AKIRA OKATA, geändert vor 8 Jahren.

Utilização de Query no método Search do DLAppServiceImpl (JSONWS)

New Member Beiträge: 9 Beitrittsdatum: 15.07.14 Neueste Beiträge
Boa tarde,
estou com dúvida de como proceder a utilização de uma Query customizada no método Search da classe DLAppServiceImpl do JSONWS que recebe como parâmetros:

(long repositoryId, SearchContext searchContext , Query query).

Tentei enviar o seguinte objeto JSON:

Liferay.Service(
  '/dlapp/search',
  {
    repositoryId: 20195,
    searchContext: {companyId:20155},
    query: {query: ""}
  },
  function(obj) {
    console.log(obj);
  }
);


porém é retornado o seguinte erro:

"flexjson.JSONException"

acredito que este erro seja retornado devido à estrutura do objeto Query que está sendo enviado.

Desde já agradeço,
Akira.
thumbnail
Diogo Cavalcanti Peixoto, geändert vor 8 Jahren.

RE: Utilização de Query no método Search do DLAppServiceImpl (JSONWS)

New Member Beiträge: 9 Beitrittsdatum: 04.11.14 Neueste Beiträge
Boa Tarde Akira,

Infelizmente, apesar do método está exposto na API JSON, não vai ser possível fazer a chamada passando
o parâmetro Query. Pois, todas as classes que implementam com.liferay.portal.kernel.search.Query não
possuem um construtor vazio. Se você verificar o log do servidor verá a seguinte mensagem:
Could not find a no-arg constructor for com.liferay.portal.kernel.search.Query

Se você precisar de fato usar a API JSON, tem uma opção que seria construir um serviço remoto que receba
os parâmetros necessários para construir as classes que implementam a interface com.liferay.portal.kernel.search.Query
e esse serviço redirecionaria para o serviço do DLApp.

Segue um exemplo abaixo:

public Hits search(
long repositoryId, SearchContext searchContext, String queryString)
throws SystemException, SearchException {

Query query = StringQueryFactoryUtil.create(queryString);

return DLAppServiceUtil.search(repositoryId, searchContext, query);
}