@@ -38,6 +38,7 @@ public class ElementReader {
3838 private boolean isParamCollection ;
3939 private boolean isParamMap ;
4040 private final Set <String > imports = new HashSet <>();
41+ private BeanParamReader formBeanReader ;
4142
4243 ElementReader (Element element , ParamType defaultType , boolean formMarker ) {
4344 this (element , null , Util .typeDef (element .asType ()), defaultType , formMarker );
@@ -74,6 +75,10 @@ public class ElementReader {
7475 paramType = ParamType .CONTEXT ;
7576 useValidation = false ;
7677 }
78+ if (ParamType .FORM == paramType || ParamType .BEANPARAM == paramType ) {
79+ this .formBeanReader = getFormBeanReader (rawType , rawType , defaultType );
80+ this .imports .addAll (formBeanReader .imports ());
81+ }
7782 }
7883
7984 TypeHandler initTypeHandler () {
@@ -289,21 +294,9 @@ void setValue(Append writer) {
289294 }
290295
291296 private boolean setValue (Append writer , PathSegments segments , String shortType ) {
292- // if (formMarker && impliedParamType && typeHandler == null) {
293- // if (ParamType.FORM != paramType) {
294- // throw new IllegalStateException("Don't get here?");
295- // }
296- //// // @Form on method and this type is a "bean" so treat is as a form bean
297- //// writeForm(writer, shortType, varName, ParamType.FORMPARAM);
298- //// paramType = ParamType.FORM;
299- //// return false;
300- // }
301- if (ParamType .FORM == paramType ) {
302- writeForm (writer , shortType , varName , ParamType .FORMPARAM );
303- return false ;
304- }
305- if (ParamType .BEANPARAM == paramType ) {
306- writeForm (writer , shortType , varName , ParamType .QUERYPARAM );
297+
298+ if ((ParamType .FORM == paramType ) || (ParamType .BEANPARAM == paramType )) {
299+ formBeanReader .write (writer );
307300 return false ;
308301 }
309302 if (impliedParamType ) {
@@ -366,10 +359,10 @@ private boolean setValue(Append writer, PathSegments segments, String shortType)
366359 return true ;
367360 }
368361
369- private void writeForm ( Append writer , String shortType , String varName , ParamType defaultParamType ) {
370- TypeElement formBeanType = typeElement ( rawType );
371- BeanParamReader form = new BeanParamReader ( formBeanType , varName , shortType , defaultParamType );
372- form . write ( writer );
362+ private BeanParamReader getFormBeanReader (
363+ String shortType , String varName , ParamType defaultParamType ) {
364+ final TypeElement formBeanType = typeElement ( rawType );
365+ return new BeanParamReader ( formBeanType , varName , shortType , defaultParamType );
373366 }
374367
375368 public ParamType paramType () {
0 commit comments