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:
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.
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.
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);
}
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);
}