Hi, Please create a proper Pull Request so it is easier to see the changed code and to comment on it.
On Tue, Jun 2, 2015 at 7:03 AM, Tobias Soloschenko < tobiassolosche...@googlemail.com> wrote: > Thanks for the great hints! I am going to apply your changes, soon! > > kind regards > > Tobias > > > Am 01.06.2015 um 23:55 schrieb Sven Meier <s...@meiers.net>: > > > > Hi Tobias, > > > >> public OutputField(String id, IModel<String> model) > > > > something else than String could be possibly too, couldn't it? > > There was a reason why to use String but I will try to change it to T > again. > > > > > >public String getFormId() > > > > I'd prefer #getForm() instead, similar to AjaxButton. > > > > Yep I will change this to not use Strings only. > > > > public List<String> getForIds() > > > > I'd prefer components instead of ids here too (similar to > IFormValidator): > > > > public FormComponent<?>[] getDependentFormComponents() > > > > I like the syntax to be similar to other components - I will change this. > > > >private class OutputDefaultAjaxBehavior extends > AbstractDefaultAjaxBehavior > > > > I don't see a need for this default behavior - devs will probably have > to recalculate the value on the server anyway. > > The Idea behind this behavior is that you get the value just in time when > it changes on client side and because it is calculated there the final > value has to be send to the server. > > > > > > form1.add(new AttributeAppender("onInput", String.format(...))); > > > > Couldn't that be handled by OutputField automatically? Preferably with > event registration instead of an inline event handler? > > > > No because the value calculation can be rather complex and there is no > option to handle it in a generic way, but I will change it to event > registration. > > > public void renderHead(IHeaderResponse response) > > { > > super.renderHead(response); > > > > > response.render(OnDomReadyHeaderItem.forScript(String.format("$('#%s').on('input', > function() { %s });", getForm().getMarkupId(), getInputScript())); > > } > > Good point - jquery is already loaded because of the ajax behavior. > You should not use jQuery and/or $ in Java code. Only Wicket.xyz APIs. Otherwise IJavaScriptLibrarySettings#setWicketAjaxReference() would have no purpose. > > > > > My 2 cents > > Sven > > > > > >> On 01.06.2015 22:35, Tobias Soloschenko wrote: > >> Hi everyone, > >> > >> I would like to introduce a new API to make responsive forms available > with the HTML5 tag "output". > >> > >> Information and examples can be found here: > >> > >> > https://github.com/klopfdreh/wicket-components-playground/wiki/14.-HTML5-OutputField-API > >> > >> Benefits of the OutputField > >> > >> * Easy client side calculations based on input fields and an > AttributeAppender - so the calculation can be changed on server side: > >> > >> // number1 and number2 are input fields > >> form.add(new AttributeAppender("onInput", > String.format("%s.value=parseFloat(%s.value)+ parseFloat(%s.value)", > outputField.getMarkupId(), number1.getMarkupId(), number2.getMarkupId()))); > >> > >> * Automated push of the value to the server side. There the value can > be retrieved by get the model of the output field: > >> > >> form.add(new AjaxButton("submit") { > >> > >> private static final long serialVersionUID = 1L; > >> > >> @Override > >> protected void onSubmit(AjaxRequestTarget target, Form<?> form) { > >> target.add(label.setDefaultModelObject("The current output > value: " + outputField.getDefaultModelObject())); > >> } > >> }.setDefaultFormProcessing(false)); > >> > >> I would be very pleased for any feedback! :-) > >> > >> kind regards > >> > >> Tobias > > >