Java tutorial
/* * Copyright 2014 Tagbangers, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.wallride.web.controller.admin.customfield; import org.springframework.core.convert.ConversionService; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.web.PageableDefault; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.util.StringUtils; import org.springframework.validation.BindingResult; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.support.SessionStatus; import org.springframework.web.servlet.mvc.support.RedirectAttributes; import org.springframework.web.servlet.support.ServletUriComponentsBuilder; import org.springframework.web.util.UriComponents; import org.springframework.web.util.UriComponentsBuilder; import org.wallride.domain.CustomField; import org.wallride.service.CustomFieldService; import org.wallride.web.support.ControllerUtils; import org.wallride.web.support.Pagination; import javax.inject.Inject; import javax.servlet.http.HttpServletRequest; import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.util.Map; @Controller @RequestMapping("/{language}/customfields/index") public class CustomFieldSearchController { @Inject private CustomFieldService customfieldService; @Inject private ConversionService conversionService; @ModelAttribute("form") public CustomFieldSearchForm setupCustomfieldSearchForm() { return new CustomFieldSearchForm(); } @ModelAttribute("query") public String query(@RequestParam(required = false) String query) { return query; } @RequestMapping(method = RequestMethod.GET) public String search(@PathVariable String language, @Validated @ModelAttribute("form") CustomFieldSearchForm form, BindingResult result, @PageableDefault(50) Pageable pageable, Model model, HttpServletRequest servletRequest) throws UnsupportedEncodingException { Page<CustomField> customFields = customfieldService.getCustomFields(form.toCustomFieldSearchRequest(), pageable); model.addAttribute("customFields", customFields); model.addAttribute("pageable", pageable); model.addAttribute("pagination", new Pagination<>(customFields, servletRequest)); UriComponents uriComponents = ServletUriComponentsBuilder.fromRequest(servletRequest) .queryParams(ControllerUtils.convertBeanForQueryParams(form, conversionService)).build(); if (!StringUtils.isEmpty(uriComponents.getQuery())) { model.addAttribute("query", URLDecoder.decode(uriComponents.getQuery(), "UTF-8")); } return "customfield/index"; } @RequestMapping(params = "query") public String search(@PathVariable String language, String query, Model model, SessionStatus sessionStatus, RedirectAttributes redirectAttributes) { sessionStatus.setComplete(); for (Map.Entry<String, Object> mapEntry : model.asMap().entrySet()) { redirectAttributes.addFlashAttribute(mapEntry.getKey(), mapEntry.getValue()); } String url = UriComponentsBuilder.fromPath("/_admin/{language}/customfields/index").query(query) .buildAndExpand(language).encode().toUriString(); return "redirect:" + url; } @RequestMapping(method = RequestMethod.GET, params = "part=bulk-delete-form") public String partBulkDeleteForm(@PathVariable String language) { return "customfield/index::bulk-delete-form"; } }