The {@link Text TextTag} uses this approach. For unnamed parameters an example is given in the classjavadoc for {@link Param ParamTag}.
36373839404142
public String getBeanName() { return "fielderror"; } protected Component getBean(ValueStack stack, HttpServletRequest req, HttpServletResponse res) { return new FieldError(stack, req, res); }
37383940414243
public String getBeanName() { return "optiontransferselect"; } protected Component getBean(ValueStack stack, HttpServletRequest req, HttpServletResponse res) { return new OptionTransferSelect(stack, req, res); }
public String getBeanName() { return "param"; } protected Component getBean(ValueStack stack, HttpServletRequest req, HttpServletResponse res) { return new Param(stack); }
public ParamModel(ValueStack stack, HttpServletRequest req, HttpServletResponse res) { super(stack, req, res); } protected Component getBean() { return new Param(stack); }
38394041424344
protected String name; protected String value; protected boolean suppressEmptyParameters; public Component getBean(ValueStack stack, HttpServletRequest req, HttpServletResponse res) { return new Param(stack); }
44454647484950515253
} protected void populateParams() { super.populateParams(); Param param = (Param) component; param.setName(name); param.setValue(value); param.setSuppressEmptyParameters(suppressEmptyParameters); }
34353637383940
protected String name; protected String value; public Component getBean(ValueStack stack, HttpServletRequest req, HttpServletResponse res) { return new Param(stack); }
404142434445464748
} protected void populateParams() { super.populateParams(); Param param = (Param) component; param.setName(name); param.setValue(value); }
32333435363738