Oh i see, thank you so much. Just one more question, if i implement it will it cause any problems to the FormVisitor?
On Tue, Jun 10, 2025 at 9:48 PM Martijn Dashorst <martijn.dasho...@gmail.com> wrote: > You can take a look at the wicket-bootstrap integration/components project > for inspiration (or use that). > > But I don't have many issues with your code. > > I'd probably use TypedPanel (or is it GenericPanel) as a base class, which > takes the model object's class as a parameter, to make sure the textfield > uses a type converter for the value. I guess you can switch out the editor > field based on the type to be a numeric/date/text field or even an enum > field. > > the init method is unnecessary, there is already an 'onInitialize()` method > you can override and should use. > > That's about it. > > Martijn > > > On Mon, Jun 9, 2025 at 11:29 AM Joel Jabez <joeldave...@gmail.com> wrote: > > > Hi so i recently, made some text field with some wrapper around with some > > bootstrap class also. Im using this in alot of places, so for that i > > created a component for it. Here is the java class and html page > > > > public abstract class FormComponentTextField extends Panel > > { > > private final String propertyExpression; > > private final Form<?> form; > > private final Class<?> resourceClazz; > > private final String displayName; > > > > protected FormComponentTextField(String id, Form<?> form) > > { > > > > this(id, form, (Class<?>) null); > > } > > > > protected FormComponentTextField(String id, Form<?> form, String > > propertyExpression) > > { > > > > this(id, form, null, id, propertyExpression); > > } > > > > protected FormComponentTextField(String id, Form<?> form, Class<?> > > resourceClazz) > > { > > this(id, form, resourceClazz, id, id); > > } > > > > protected FormComponentTextField(String id, Form<?> form, Class<?> > > resourceClazz, String displayName, String propertyExpression) > > { > > super(id); > > this.form = form; > > this.resourceClazz = resourceClazz == null ? > > this.getClass().getNestHost() : resourceClazz; > > this.displayName = displayName; > > this.propertyExpression = propertyExpression; > > init(); > > } > > > > protected void init() > > { > > add(createTextFieldLabel()); > > add(createTextField()); > > } > > > > protected Label createTextFieldLabel() > > { > > Label label = new Label("fieldLabel", getLabel()); > > if (isRequiredTextField()) { > > label.add(AttributeModifier.append("class", > > "mandatory-field")); > > } > > > > return label; > > } > > > > protected TextField<String> createTextField() > > { > > TextField<String> textField = isRequiredTextField() ? new > > RequiredTextField<>("textField") : > > new > TextField<>("textField"); > > > > textField.setLabel(getLabel()); > > textField.setOutputMarkupId(true); > > textField.add(getMaximumLength()); > > textField.setDefaultModel(new > > PropertyModel<>(form.getDefaultModel(), propertyExpression)); > > getValidators().forEach(textField::add); > > > > return textField; > > } > > > > protected boolean isRequiredTextField() > > { > > return false; > > } > > > > protected Model<String> getLabel() > > { > > return Model.of(getPropertyValue(displayName)); > > } > > > > public String getPropertyValue(String property) > > { > > return StringResourceUtils.getString(resourceClazz, property); > > } > > > > protected StringValidator getMaximumLength() > > { > > return StringValidator.maximumLength(255); > > } > > > > protected List<IValidator<String>> getValidators() > > { > > return List.of(); > > } > > } > > > > > > > > <?xml version="1.0" encoding="UTF-8"?> > > <html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket=" > > http://wicket.apache.org"> > > <body> > > <wicket:panel> > > <div class="mb-3 row"> > > <span class="col-sm-3 col-form-label" wicket:id="fieldLabel"></span> > > <div class="col-sm-9"> > > <input class="form-control" type="text" wicket:id="textField"/> > > </div> > > </div> > > </wicket:panel> > > </body> > > </html> > > > > > > I wanna ask whether this is the best way to do, or is there a better way > to > > do it > > > > > -- > Become a Wicket expert, learn from the best: http://wicketinaction.com >