1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/dromara-forest

 / Детали:

Переопределите DefaultFormConverter, но инициализация не удалась

Предстоит сделать
Владелец
Создано  
11.03.2025

Используемый версионный Forest и используемое backend с его версией

Forest: 1.5.36
Backend: okhttp 4.11.0

Как возникла данная проблема?

Здравствуйте, текущий способ encode формы не удовлетворяет требованиям, поэтому я хочу создать свой FormConverter, но при каждом попытке создания экземпляра возникает исключение.

Шаги воспроизведения (если есть, укажите все подробности)

  1. Копирую CustomerFormConverter.java
  2. Внедряю через @Bean
public class CustomerFormConfig {
    @Resource
    private ForestConfiguration forestConfiguration;

    @Bean
    public CustomerFormConverter customerFormConverter() {
        return new CustomerFormConverter(forestConfiguration);
    }
}
  1. Использую
@Post(url = "/savecar",
      contentType = "application/x-www-form-urlencoded; charset=UTF-8")
@BodyType(type = "form", encoder = CustomerFormConverter.class)
String saveCarQuery(@Body String req);
```### Ошибочное сообщение/полный лог запроса (если нет лога запроса, включите отладочный режим)
Лог ошибки

com.dtflys.forest.exceptions.ForestRuntimeException: java.lang.InstantiationException: com.xxx.CustomerFormConvertor

	at com.dtflys.forest.reflection.SpringForestObjectFactory.getObject(SpringForestObjectFactory.java:39)
	at com.dtflys.forest.reflection.ForestMethod.processMetaRequest(ForestMethod.java:726)
	at com.dtflys.forest.reflection.ForestMethod.processMethodAnnotations(ForestMethod.java:608)
	at com.dtflys.forest.reflection.ForestMethod.initMethod(ForestMethod.java:166)
	at com.dtflys.forest.reflection.ForestMethod.makeRequest(ForestMethod.java:881)
	at com.dtflys.forest.reflection.ForestMethod.invoke(ForestMethod.java:1454)
	at com.dtflys.forest.proxy.InterfaceProxyHandler.invoke(InterfaceProxyHandler.java:236)
	at com.sun.proxy.$Proxy221.saveCarQuery(Unknown Source)
	at com.xxx.ToubaoTest.test(ToubaoTest.java:49)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.springframework.test.context.junit4.statements.RunBeforeTestExecutionCallbacks.evaluate(RunBeforeTestExecutionCallbacks.java:74)
	at org.springframework.test.context.junit4.statements.RunAfterTestExecutionCallbacks.evaluate(RunAfterTestExecutionCallbacks.java:84)
	at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:75)
	at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:86)
	at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:84)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)
	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:251)
	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97)
	at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
	at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
	at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
	at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)
	at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69)
	at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38)
	at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11)
	at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35)
	at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:232)
	at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:55)Причина: java.lang.InstantiationException: com.xxx.CustomerFormConvertor  
        в java.lang.Class.newInstance(Class.java:427)  
        в com.dtflys.forest.reflection.DefaultObjectFactory.getObject(DefaultObjectFactory.java:66)  
        ...  
        ещё 42 строки  

Причина: java.lang.NoSuchMethodException: com.xxx.CustomerFormConvertor.<init>()  
        в java.lang.Class.getConstructor0(Class.java:3082)  
        в java.lang.Class.newInstance(Class.java:412)  
        ...  
        ещё 43 строки  

Вопрос 1: Как правильно переопределить DefaultFormConverter?
Вопрос 2: В текущей версии возможно ли передачу данных формы без encode в forest? Я сам выполняю encode передачи данных, а forest не производит никакой обработки этих параметров, что может сделать это более гибким.

Спасибо!

Комментарий (0)

GitLife Service Account Задача создана

Вход Перед тем как оставить комментарий

Статус
Ответственный
Контрольная точка
Pull Requests
Связанные запросы на слияние могут быть закрыты после их объединения
Ветки
Дата начала   -   Крайний срок
-
Закрепить/Открепить
Приоритет
Участники(1)
1
https://api.gitlife.ru/oschina-mirror/dromara-forest.git
git@api.gitlife.ru:oschina-mirror/dromara-forest.git
oschina-mirror
dromara-forest
dromara-forest