Получение данных json из AJAX в команде ресурсов MVC (Liferay 7.4)Jquery

Программирование на jquery
Ответить
Anonymous
 Получение данных json из AJAX в команде ресурсов MVC (Liferay 7.4)

Сообщение Anonymous »

Мне не удается получить данные JSON из AJAX в команде ресурсов MVC, поскольку я получаю нулевое значение в параметре запроса.
Я искал несколько ответов Stackoverflow, чтобы решить проблему , и мне непонятно, где я ошибаюсь.
Фрагмент кода и снимки экрана будут представлены ниже.
Портлет контроллера
Портлет контроллера
сильный>

Код: Выделить всё

@Component(
immediate = true,
property = {
"com.liferay.portlet.display-category=Demo",
"com.liferay.portlet.header-portlet-css=/css/main.css",
"com.liferay.portlet.footer-portlet-javascript=/js/main.js",
"com.liferay.portlet.instanceable=true",
"javax.portlet.display-name=Empleado",
"javax.portlet.init-param.template-path=/",
"javax.portlet.init-param.view-template=/view.jsp",
"javax.portlet.name=" + EmpleadoPortletKeys.EMPLEADO,
"javax.portlet.resource-bundle=content.Language",
"javax.portlet.security-role-ref=power-user,user",
"javax.portlet.version=3.0"
},
service = Portlet.class
)
public class EmpleadoPortlet extends MVCPortlet {

public void render(RenderRequest renderRequest, RenderResponse renderResponse) throws IOException, PortletException {

List empleados = EmpleadoLocalServiceUtil.getEmpleados(-1, -1);

renderRequest.setAttribute(EmpleadoPortletKeys.EMPLEADO_ID_TABLE_HEADER, EmpleadoPortletKeys.EMPLEADO_ID_TABLE_HEADER);
renderRequest.setAttribute(EmpleadoPortletKeys.DNI_TABLE_HEADER, EmpleadoPortletKeys.DNI_TABLE_HEADER);
renderRequest.setAttribute(EmpleadoPortletKeys.NOMBRE_TABLE_HEADER, EmpleadoPortletKeys.NOMBRE_TABLE_HEADER);
renderRequest.setAttribute(EmpleadoPortletKeys.APELLIDOS_TABLE_HEADER, EmpleadoPortletKeys.APELLIDOS_TABLE_HEADER);
renderRequest.setAttribute(EmpleadoPortletKeys.CARGO_TABLE_HEADER, EmpleadoPortletKeys.CARGO_TABLE_HEADER);
renderRequest.setAttribute(EmpleadoPortletKeys.ACCIONES_TABLE_HEADER, EmpleadoPortletKeys.ACCIONES_TABLE_HEADER);
renderRequest.setAttribute(EmpleadoPortletKeys.EMPLEADOS, empleados);

super.render(renderRequest, renderResponse);
}

}
view.jsp[/b]

Код: Выделить всё






${fn:toUpperCase(dni)}
${nombre}
${apellidos}
${cargo}
${acciones}





${employee.dni}
${employee.nombre}
${employee.apellidos}
${employee.cargo}




[i][/i]



[i][/i]












let empleadoResourceURL = '${empleadoResourceURL}';

main.js

Код: Выделить всё

function ajaxCall(data) {

$.ajax({
beforeSend : function() {
/*showSpinner();*/
},
url: empleadoResourceURL,
type: "POST",
data: JSON.stringify(data),
contentType: "json",
success: function(data) {
console.log("Respuesta de la solicitud: " + data);

switch(data){

case 'updateEmployee':
console.log('Empleado actualizado: OK');
break;

}
},
error: function(xhr, status) {
console.log("La solicitud ha fallado: " +  status);
},
complete: function(xhr, status) {
/*hideSpinner();*/
}
});

}

$(document).ready(function(){

$('#empleado-portlet .btn-actions').on('click','.btn-update',function() {
var data = {};

data.action = 'updateEmployee';
data.selectedEmployee = $(this).attr('id');

console.log(data);
console.log('JSON.stringfy: ' + JSON.stringify(data));

ajaxCall(data);
});

});
Команда ресурса MVC

Код: Выделить всё

@Component(
property = {
"javax.portlet.name=" + EmpleadoPortletKeys.EMPLEADO,
"mvc.command.name=empleado-resource",
"javax.portlet.version=3.0"
},
service = MVCResourceCommand.class
)
public class EmpleadoResource extends BaseMVCResourceCommand{

@Override
public void doServeResource(ResourceRequest resourceRequest, ResourceResponse resourceResponse) throws Exception {
System.out.println("I HAVE PASSED");

ResourceParameters resourceParameters = resourceRequest.getResourceParameters();
PrintWriter printWriter = resourceResponse.getWriter();

//Alternative 1
String action_1 = resourceParameters.getValue(EmpleadoPortletKeys.ACTION);
System.out.println("ACTION_1: " + action_1);

//Alternative 2
String action_2 = ParamUtil.getString(resourceRequest, EmpleadoPortletKeys.ACTION);
System.out.println("ACTION_2: " + action_2);

printWriter.print(EmpleadoPortletKeys.ACTION_REMOVE_EMPLEADO);

}

}
Проблема
После развертывания портлета в таблице на странице выбирается кнопка обновления.В На изображении ниже вы можете видеть через консоль браузера, что функция AJAX выполняет запрос и ответ.
[img]https://i .sstatic.net/6XfyD1BM.png[/img]

С другой стороны, в консоли eclipse вы можете видеть, что метод команды ресурсов MVC "doServeResource" выполняется, поскольку он печатает " Я прошел» на экране. Однако значение ключа «действие» не получено.
Первый вариант печатает «ноль», а второй вариант — пустое.
Изображение

- Почему я не могу получить json из AJAX в команде ресурсов MVC?
- Что я делаю не так?

Подробнее здесь: https://stackoverflow.com/questions/789 ... iferay-7-4
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Jquery»