Member 14635434 Ответов: 1

Как получить доступ к другому контроллеру, используя jqery только одну кнопку.


Всем привет,
У меня есть класс контроллера в моем приложении spring boot есть несколько контроллеров и одна HTML-форма есть только одна кнопка.

Если я делаю несколько кнопок, то HTML-форма очень большая, и я хочу показывать только одну кнопку за раз.

Можно ли получить доступ ко всем контроллерам с помощью одной кнопки или другого щелчка?

Что я уже пробовал:

Я пробовал несколько кнопок, и это не очень хорошая идея.

//Cotrollers
@RequestMapping(value = "/actionZoneAdd", method = RequestMethod.GET)
	public String addZone(@ModelAttribute("objZone") @Valid Zone objZone, BindingResult bindingResult, Model model,
			Principal principal) {

		User loginedUser = (User) ((Authentication) principal).getPrincipal();
		if (bindingResult.hasErrors()) {
			log.info("validate Zone");
			model.addAttribute("zoneData", zoneAddressRepo.findAll());
			return "addMasterAddress";
		}
		log.info("Add one Zone");
		masterAddressService.saveZoneDetails(objZone, loginedUser.getUsername());
		return "redirect:showZone";
	}

	// for update and change status of Zone
	@RequestMapping(value = "/actionZoneUpdate", method = RequestMethod.GET)
	public String updateZone(@RequestParam("zoneId") Long id, @ModelAttribute("objZone") @Valid Zone objZone,
			BindingResult bindingResult, Model model, Principal principal) {

		User loginedUser = (User) ((Authentication) principal).getPrincipal();
		if (bindingResult.hasErrors()) {
			log.info("validate update Zone");
			model.addAttribute("zoneData", zoneAddressRepo.findAll());
			return "addMasterAddress";
		}
		log.info("Update selected Zone");
		Optional<Zone> zoneList = zoneAddressRepo.findById(id);
		Zone currentZone = zoneList.get();
		masterAddressService.updateZoneDetails(currentZone, loginedUser, objZone.getZone());
		return "redirect:showZone";
	}

@RequestMapping(value = "/actionMasterAddressAdd", method = RequestMethod.GET)
	public String addMasterAddress(MasterAddress objMasterAddress,
			BindingResult bindingResult, Model model, Principal principal) {

		User loginedUser = (User) ((Authentication) principal).getPrincipal();
		/* if (bindingResult.hasErrors()) {
			log.info("validate SubOffice");
			model.addAttribute("masterAddressData", masterAddressRepository.findAll());
			return "addMasterAddress";
		} */

		log.info("Add one SubOffice");
		masterAddressService.saveMasterAddressDetails(objMasterAddress, loginedUser.getUsername());
		return "redirect:showMasterAddress";
	}

	// for update and change status of MasterAddress
	@RequestMapping(value = "/actionMasterAddressUpdate", method = RequestMethod.GET)
	public String updateMasterAddress(@RequestParam("masterAddressId") Long id, MasterAddress objMasterAddress, Model model,
			Principal principal) {
		User loginedUser = (User) ((Authentication) principal).getPrincipal();
		/* if (bindingResult.hasErrors()) {
			log.info("validate update MasterAddress");
			model.addAttribute("masterAddressData", masterAddressRepository.findAll());
			return "addMasterAddress";
		} */

		log.info("Update selected MasterAddress");
		Optional<MasterAddress> masterAddressList = masterAddressRepository.findById(id);
		MasterAddress currentMasterAddress = masterAddressList.get();
		masterAddressService.updateMasterAddressDetails(currentMasterAddress, loginedUser, objMasterAddress.getSubOffice());
		return "redirect:showMasterAddress";
	}


jQuery



Добавь
Обновление


function saveMasterAddress() {
        $('#masterAddressForm').attr("action", "actionMasterAddressAdd");
        $("#masterAddressForm").submit();
    }
    function updateMasterAddress() {
        $('#masterAddressForm').attr("action", "actionMasterAddressUpdate");
        $("#masterAddressForm").submit();
    }


function saveZone() {
        $('#masterAddressForm').attr("action", "actionZoneAddressAdd");
        $("#masterAddressForm").submit();
    }
    function updateZoneAddress() {
        $('#masterAddressForm').attr("action", "actionZoneAddressUpdate");
        $("#masterAddressForm").submit();
    }

Member 14635434

Я думаю, что это невозможно.

1 Ответов

Рейтинг:
1

Afzaal Ahmad Zeeshan

Цитата:
одной кнопки другую нажать?
Это возможно только в том случае, если вы обрабатываете щелчок правой кнопкой мыши и щелчок левой кнопкой мыши отдельно. Затем это требование может быть выполнено, и вы можете прикрепить различные обработчики, которые отправляют запрос на разные контроллеры.

Одним из способов сделать это было бы справиться, click и contextmenu события. Эта тема SO говорит немного больше об этом, html - как я могу захватить событие щелчка правой кнопкой мыши в JavaScript? - переполнение стека[^]

Но это нарушило бы интуицию пользователей и потребовало бы от них выполнения некоторых странных действий, с которыми они не очень хорошо знакомы—UX рекомендует против такого подхода к разработке. Хорошим подходом было бы создать форму, в которой пользователь может легко изменить состояние—простой флажок,—а затем ваша форма будет работать так, как этого хочет пользователь.

Совет: не держите карты в рукавах.