[
https://issues.apache.org/jira/browse/WICKET-1117?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12539214
]
Johan Compagner commented on WICKET-1117:
-----------------------------------------
yes we have to call getModel at least once before the first onRender else the
model doesn't have to be there.
And looking at the code now, even if the model changes we still expect the type
to be the same, but i am fine with that...
Because for the same textfield the thing that is displays can constantly
change? looks weird to me.
This is only a problem when the class is a String. Those are constantly being
resolved, the rest are done once.
We could set a flag, TYPE_RESOLVED and test for that instead of getType()
> FormComponent.setType is called in AbstractTextComponent.onBeforeRender
> -----------------------------------------------------------------------
>
> Key: WICKET-1117
> URL: https://issues.apache.org/jira/browse/WICKET-1117
> Project: Wicket
> Issue Type: Improvement
> Components: wicket
> Affects Versions: 1.3.0-beta4
> Environment: Linux
> Reporter: Bruno Borges
> Fix For: 1.3.0-beta5
>
>
> The method FormComponent.setType() is called in onBeforeRender() and this
> will happen everytime, without having changes in the Model.
> The only way I see to change the Model's Component, is calling setModel().
> So, my suggestion is to override Component.setModel in AsbtractTextComponent
> calling super.setModel, and after that update the type.
> public Component setModel(final IModel model)
> {
> Component component = super.setModel(model);
> updateType();
> return component;
> }
> protected void updateType()
> {
> if (getType() == null)
> {
> // Set the type, but only if it's not a String (see WICKET-606).
> // Otherwise, getConvertEmptyInputStringToNull() won't work.
> Class type = getModelType(getModel());
> if (!String.class.equals(type))
> {
> setType(type);
> }
> }
> }
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.