Там разные способы сделать это.
Если вы можете изменить MyDTO
класс, самый простой способ, чтобы добавить сеттер как это было предложено M.Deinum:
public class MyDTO {
private String kiosk;
...
public void setNew_kiosk(String kiosk) {
this.kiosk = kiosk;
}
}
Таким образом, вы можете обрабатывать http://localhost:1234/mvc/controllerUrl?kiosk=false
, а также http://localhost:1234/mvc/controllerUrl?new_kiosk=false
Если вы (поскольку DTO является частью библиотеки, которую вы не можете изменить или ...), вы можете использовать фильтр, сопоставленный с /mvc/controllerUrl
, который будет обертывать запрос с помощью настраиваемого HttpServlerRequestWrapper
, который переопределит следующие методы:
String getParameter(String name)
Map<String,String[]> getParameterMap()
Enumeration<String> getParameterNames()
String[] getParameterValues(String name)
, вызывающий базовые методы запроса и обрабатывающие имя специального параметра. Пример:
String[] getParameterValues(String name) {
String[] values = req.getParameterValues(name); // req is the wrapped request
if ("kiosk".equals(name) && (values == null) { // will accept both names
values = req.getParameterValues("new_kiosk"); // try alternate name
}
return values;
}
Это будет гораздо труднее писать и тестировать, так только идти по этому пути, если вы не можете изменить MyDTO
класс.
Вы также можете попытаться использовать пользовательскую реализацию WebBindingInitializer
.От Spring Framework Reference Manual:
экстернализовать связывания инициализации данных, вы можете обеспечить собственную реализацию интерфейса WebBindingInitializer
, который затем включить путем подачи пользовательской конфигурации боб для AnnotationMethodHandlerAdapter
, тем самым перекрывая конфигурацию по умолчанию.
Опасайтесь: рекомендуется использовать это для регистрации пользовательских редакторов для целого приложения - не для вашего использования. И Spring Framework изнутри описывается как легко расширяется, но не переопределяет. Пусть покупатель будет бдителен ...
Резюме: попробуйте использовать метод 1, если вы не можете, а затем использовать method2, и только попробуйте method3, если у вас есть другие причины, чтобы использовать пользовательские WebBindingInitializer
Что такое тип данных (JSON/XML и т. Д.), Которые вы принимаете с лицевой стороны? – RE350
@ RE350 Это просто получить параметры. url вроде этого ** controllerUrl? new_kiosk = false ** – gstackoverflow
Я настоятельно рекомендую прочитать спецификацию java bean. Свойство - это просто имя получателя/сеттера, как имя поля внутренне не имеет значения. Если ваше поле называется 'foo', и у вас есть метод' setBar', который устанавливает значение 'foo', у вас есть свойство' bar'. Свойство! = Поле. –