On Wed, Mar 19, 2008 at 10:54 PM, Igor Vaynberg <[EMAIL PROTECTED]>
wrote:
> yes. there is a phase of processing that goes through and collects the
> feedback messages. you are reporting the error after that phase most
> likely, so it will get picked up next request. i wonder if calling
> feedbackpanel.detach() will help before you add it to the ajax request
> target...
>
> -igor
>
>
> On Wed, Mar 19, 2008 at 7:06 PM, Matthew Young <[EMAIL PROTECTED]> wrote:
> > >> Overriding onBeforeRender() doesn't work on Ajax, it's not called :(
> > >
> > >it is, but only on components that get updated via ajax...so you might
> > >want to move the code to one of those...
> >
> > Now the code gets call in Ajax. But the error message still doesn't
> show up
> > in FeedbackPanel. Does this make sense to you at all?
> >
> >
> > On Wed, Mar 19, 2008 at 6:23 PM, Igor Vaynberg <[EMAIL PROTECTED]
> >
> >
> >
> > wrote:
> >
> > > On Wed, Mar 19, 2008 at 5:54 PM, Matthew Young <[EMAIL PROTECTED]>
> wrote:
> > > > Hi Igor,
> > > >
> > > > Overriding onBeforeRender() doesn't work on Ajax, it's not called
> :(
> > >
> > > it is, but only on components that get updated via ajax...so you
> might
> > > want to move the code to one of those...
> > >
> > > > Is there anyway to handle this kind of error condition for both
> Ajax
> > > and
> > > > non-Ajax?
> > >
> > > see above
> > >
> > > > Having to abandon LoadableDeachableModel is a pity. The code is
> much
> > > > clearer with LoadableDeachableModel. Anyway, does Wicket have any
> way
> > > to
> > > > let user code handle model error late in the render phase?
> > >
> > > yes it is a pity. we consider errors that happen inside models
> > > unrecoverable because they can happen at a lot of different points in
> > > the lifecycle of the component. i think throwing a
> > > restartresponseexception from inside a model might work, but that
> will
> > > only get you to a different page....hmm, maybe... { error("failed");
> > > throw restartresponseexception(MyPage.this); } will work, but then
> you
> > > gotta watch out for an infinite loop... you would have to first check
> > > if the page contains any error messages...
> > >
> > > -igor
> > >
> > >
> > >
> > >
> > > > Thanks!
> > > >
> > > > On Wed, Mar 19, 2008 at 2:53 PM, Igor Vaynberg <
> [EMAIL PROTECTED]
> > > >
> > > > wrote:
> > > >
> > > >
> > > >
> > > > > im thinking it might be too late at that point to register the
> > > > > messages because the feedback panel might have already
> rendered...
> > > > >
> > > > > perhaps instead of using a loadable detachable model you do
> something
> > > like
> > > > > this:
> > > > >
> > > > > class mypage {
> > > > > private List result;
> > > > >
> > > > > onbeforerender() {
> > > > > try {
> > > > > result=populatelist();
> > > > > } catch (exception e) {
> > > > > error("foo");
> > > > > }
> > > > > super.onbeforerender();
> > > > > }
> > > > >
> > > > > ondetach() { result=null; super.ondetach(); }
> > > > >
> > > > >
> > > > > .. add(new listview("foo", new propertymodel(this, "result"));
> > > > >
> > > > > }
> > > > >
> > > > > -igor
> > > > >
> > > > >
> > > > >
> > > > > On Wed, Mar 19, 2008 at 2:04 PM, Matthew Young <
> [EMAIL PROTECTED]>
> > > wrote:
> > > > > > I register an error to the page in the model but the feedback
> > > message
> > > > > > doesn't show in FeedbackPanel. Only the error message
> register in
> > > > > > onSubmit() event handler shows. Please have a look. Thanks!
> > > > > >
> > > > > > HomePage.html:
> > > > > >
> > > > > > <html>
> > > > > > <head></head>
> > > > > > <span wicket:id="message">message will be here</span>
> > > > > > <form wicket:id="form">
> > > > > > <input type="text" wicket:id="word"/>
> > > > > > <input type="submit" value="Enter"
> > > wicket:id="submitButton"/>
> > > > > > </form>
> > > > > > <span wicket:id="feedback">FEEDBACK</span>
> > > > > > </html>
> > > > > >
> > > > > >
> > > > > > HomePage.java
> > > > > >
> > > > > > import ...
> > > > > >
> > > > > > public class HomePage extends WebPage { private static
> final
> > > long
> > > > > > serialVersionUID = 1L;
> > > > > >
> > > > > > private String word;
> > > > > >
> > > > > > public HomePage(final PageParameters parameters) {
> > > > > >
> > > > > > add(new
> > > > > >
> FeedbackPanel("feedback").setOutputMarkupPlaceholderTag(true));
> > > > > > // if the word 'blowup' is entered, this model
> register a
> > > error
> > > > > > message to the page
> > > > > > IModel model = new Model() { private static
> > > final
> > > > > long
> > > > > > serialVersionUID = 1L;
> > > > > > @Override public Object getObject() {
> > > > > > if (word != null && word.equals("blowup")) {
> > > > > > word = "-b-l-o-w-u-p-";
> > > > > > HomePage.this.fatal("This message is from
> > > model.");
> > > > > > return "BAD THING HAPPENED IN MODEL";
> > > > > > } else {
> > > > > > return "The word is: \"" + (word == null ?
> " n
> > > u l l
> > > > > " :
> > > > > > word) + "\"";
> > > > > > }
> > > > > > }
> > > > > > };
> > > > > > add(new Label("message",
> model).setOutputMarkupId(true));
> > > > > > Form form = new Form("form", new
> > > CompoundPropertyModel(this));
> > > > > > add(form);
> > > > > > form.add(new TextField("word").setRequired(true));
> > > > > >
> > > > > > AjaxFallbackButton submitButton = new
> > > > > > AjaxFallbackButton("submitButton", form) {
> > > > > > private static final long serialVersionUID = 1L;
> > > > > > @Override protected void
> onSubmit(AjaxRequestTarget
> > > target,
> > > > > Form
> > > > > > f) {
> > > > > > if (word != null && word.equals("blowup")) {
> > > > > > HomePage.this.error("This message is from
> > > onSubmit.
> > > > > > There should also be a message from model");
> > > > > > }
> > > > > > if (target != null) {
> > > > > > target.addComponent(HomePage.this.get
> > > ("feedback"));
> > > > > > target.addComponent(HomePage.this.get
> > > ("message"));
> > > > > > }
> > > > > > }
> > > > > >
> > > > > > @Override protected void onError(AjaxRequestTarget
> > > target,
> > > > > Form
> > > > > > f) {
> > > > > > target.addComponent(HomePage.this.get
> ("feedback"));
> > > > > > // show updated error feedback
> > > > > > }
> > > > > > };
> > > > > > form.add(submitButton);
> > > > > > }
> > > > > > }
> > > > > >
> > > > >
> > > > >
> ---------------------------------------------------------------------
> > > > > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > > > > For additional commands, e-mail: [EMAIL PROTECTED]
> > > > >
> > > > >
> > > >
> > >
> > > ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > > For additional commands, e-mail: [EMAIL PROTECTED]
> > >
> > >
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>