You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@isis.apache.org by Stephen Cameron <st...@gmail.com> on 2016/05/05 02:41:06 UTC

autoComplete on parameter working in 1.12.1?

Hi,

I am trying to use autoCompleteNXxxx() for the first time and not having
any success with 1.12.1, it just doesn't seem to fire my routine at all. I
have the following two methods an autoComplete and a validate, the first
doesn't get used but the second does.

    public List<String> autoComplete2UpdateStreetAddress(@MinLength(3)
String search) {
        return suburbs.listSuburbNamesLike(search);
    }

    public String validate2UpdateStreetAddress(String name) {
        Suburb s = suburbs.suburbForName(name);
        if (s != null) {
            return null;
        } else
            return "Unknown suburb, please check spelling and use proper
case";
    }

If someone can confirm its working for them in 1.12.1 or else tell me I
have made a mistake.

Steve Cameron

Re: autoComplete on parameter working in 1.12.1?

Posted by Stephen Cameron <st...@gmail.com>.
Hi,

I went to add a Jira issue for this autoComplete problem this morning (I
forgot it before and went away for a few days) but it cannot be added at
the moment due to some spamming issues.

Meanwhile, I just came across a problem in the  Isis Security Add-on that
may be related, starting with a fresh system, when I go to add a new local
user I see an exception message.

I am using 1.12.1 version, add role and add tenancy both work.



Stack trace:

   - org.apache.wicket.WicketRuntimeException
   - Error attaching this container for rendering: [WebMarkupContainer
   [Component id = 4]]
   - org.apache.wicket.MarkupContainer#onBeforeRenderChildren(MarkupContainer.java:1696)

   - org.apache.wicket.Component#onBeforeRender(Component.java:3833)
   - org.apache.wicket.Component#internalBeforeRender(Component.java:949)
   - org.apache.wicket.Component#beforeRender(Component.java:1017)
   - org.apache.wicket.MarkupContainer#onBeforeRenderChildren(MarkupContainer.java:1684)

   - org.apache.wicket.Component#onBeforeRender(Component.java:3833)
   - org.apache.wicket.markup.repeater.AbstractRepeater#onBeforeRender(AbstractRepeater.java:143)

   - org.apache.wicket.Component#internalBeforeRender(Component.java:949)
   - org.apache.wicket.Component#beforeRender(Component.java:1017)
   - org.apache.wicket.MarkupContainer#onBeforeRenderChildren(MarkupContainer.java:1684)

   - org.apache.wicket.Component#onBeforeRender(Component.java:3833)
   - org.apache.wicket.markup.html.form.Form#onBeforeRender(Form.java:1803)
   - org.apache.wicket.Component#internalBeforeRender(Component.java:949)
   - org.apache.wicket.Component#beforeRender(Component.java:1017)
   - org.apache.wicket.MarkupContainer#onBeforeRenderChildren(MarkupContainer.java:1684)

   - org.apache.wicket.Component#onBeforeRender(Component.java:3833)
   - org.apache.wicket.Component#internalBeforeRender(Component.java:949)
   - org.apache.wicket.Component#beforeRender(Component.java:1017)
   - org.apache.wicket.MarkupContainer#onBeforeRenderChildren(MarkupContainer.java:1684)

   - org.apache.wicket.Component#onBeforeRender(Component.java:3833)
   - org.apache.wicket.Component#internalBeforeRender(Component.java:949)
   - org.apache.wicket.Component#beforeRender(Component.java:1017)
   - org.apache.wicket.MarkupContainer#onBeforeRenderChildren(MarkupContainer.java:1684)

   - org.apache.wicket.Component#onBeforeRender(Component.java:3833)
   - org.apache.wicket.Component#internalBeforeRender(Component.java:949)
   - org.apache.wicket.Component#beforeRender(Component.java:1017)
   - org.apache.wicket.Component#internalPrepareForRender(Component.java:2201)

   - org.apache.wicket.Component#prepareForRender(Component.java:2240)
   - org.apache.wicket.ajax.XmlAjaxResponse#writeComponent(XmlAjaxResponse.java:107)

   - org.apache.wicket.ajax.AbstractAjaxResponse#writeComponents(AbstractAjaxResponse.java:218)

   - org.apache.wicket.ajax.AbstractAjaxResponse#writeTo(AbstractAjaxResponse.java:150)

   - org.apache.wicket.ajax.AjaxRequestHandler#respond(AjaxRequestHandler.java:359)

   - org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor#respond(RequestCycle.java:890)

   - org.apache.wicket.request.RequestHandlerStack#execute(RequestHandlerStack.java:64)

   - org.apache.wicket.request.RequestHandlerStack#execute(RequestHandlerStack.java:97)

   - org.apache.wicket.request.cycle.RequestCycle#execute(RequestCycle.java:261)

   - org.apache.wicket.request.cycle.RequestCycle#processRequest(RequestCycle.java:218)

   - org.apache.wicket.request.cycle.RequestCycle#processRequestAndDetach(RequestCycle.java:289)

   - org.apache.wicket.protocol.http.WicketFilter#processRequestCycle(WicketFilter.java:259)

   - org.apache.wicket.protocol.http.WicketFilter#processRequest(WicketFilter.java:201)

   - org.apache.wicket.protocol.http.WicketFilter#doFilter(WicketFilter.java:282)

   - org.eclipse.jetty.servlet.ServletHandler$CachedChain#doFilter(ServletHandler.java:1668)

   - org.apache.isis.core.webapp.diagnostics.IsisLogOnExceptionFilter#doFilter(IsisLogOnExceptionFilter.java:52)

   - org.eclipse.jetty.servlet.ServletHandler$CachedChain#doFilter(ServletHandler.java:1668)

   - org.apache.shiro.web.servlet.AbstractShiroFilter#executeChain(AbstractShiroFilter.java:449)

   - org.apache.shiro.web.servlet.AbstractShiroFilter$1#call(AbstractShiroFilter.java:365)

   - org.apache.shiro.subject.support.SubjectCallable#doCall(SubjectCallable.java:90)

   - org.apache.shiro.subject.support.SubjectCallable#call(SubjectCallable.java:83)

   - org.apache.shiro.subject.support.DelegatingSubject#execute(DelegatingSubject.java:383)

   - org.apache.shiro.web.servlet.AbstractShiroFilter#doFilterInternal(AbstractShiroFilter.java:362)

   - org.apache.shiro.web.servlet.OncePerRequestFilter#doFilter(OncePerRequestFilter.java:125)

   - org.eclipse.jetty.servlet.ServletHandler$CachedChain#doFilter(ServletHandler.java:1668)

   - org.eclipse.jetty.servlet.ServletHandler#doHandle(ServletHandler.java:581)

   - org.eclipse.jetty.server.handler.ScopedHandler#handle(ScopedHandler.java:143)

   - org.eclipse.jetty.security.SecurityHandler#handle(SecurityHandler.java:548)

   - org.eclipse.jetty.server.session.SessionHandler#doHandle(SessionHandler.java:226)

   - org.eclipse.jetty.server.handler.ContextHandler#doHandle(ContextHandler.java:1158)

   - org.eclipse.jetty.servlet.ServletHandler#doScope(ServletHandler.java:511)

   - org.eclipse.jetty.server.session.SessionHandler#doScope(SessionHandler.java:185)

   - org.eclipse.jetty.server.handler.ContextHandler#doScope(ContextHandler.java:1090)

   - org.eclipse.jetty.server.handler.ScopedHandler#handle(ScopedHandler.java:141)

   - org.eclipse.jetty.server.handler.HandlerWrapper#handle(HandlerWrapper.java:119)

   - org.eclipse.jetty.server.Server#handle(Server.java:517)
   - org.eclipse.jetty.server.HttpChannel#handle(HttpChannel.java:308)
   - org.eclipse.jetty.server.HttpConnection#onFillable(HttpConnection.java:242)

   - org.eclipse.jetty.io.AbstractConnection$ReadCallback#succeeded(AbstractConnection.java:261)

   - org.eclipse.jetty.io.FillInterest#fillable(FillInterest.java:95)
   - org.eclipse.jetty.io.SelectChannelEndPoint$2#run(SelectChannelEndPoint.java:75)

   - org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume#produceAndRun(ExecuteProduceConsume.java:213)

   - org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume#run(ExecuteProduceConsume.java:147)

   - org.eclipse.jetty.util.thread.QueuedThreadPool#runJob(QueuedThreadPool.java:654)

   - org.eclipse.jetty.util.thread.QueuedThreadPool$3#run(QueuedThreadPool.java:572)

   - java.lang.Thread#run(Thread.java:745)
   -
   - Caused by:
   -
   - java.lang.NullPointerException
   -
   - org.apache.isis.core.metamodel.facets.object.autocomplete.AutoCompleteFacetAbstract#findMethod(AutoCompleteFacetAbstract.java:145)

   - org.apache.isis.core.metamodel.facets.object.autocomplete.AutoCompleteFacetAbstract#getMinLength(AutoCompleteFacetAbstract.java:134)

   - org.apache.isis.viewer.wicket.ui.components.scalars.reference.ReferencePanel#syncWithInput(ReferencePanel.java:281)

   - org.apache.isis.viewer.wicket.ui.components.scalars.reference.ReferencePanel#addComponentForRegular(ReferencePanel.java:126)

   - org.apache.isis.viewer.wicket.ui.components.scalars.reference.ReferencePanel#addComponentForRegular(ReferencePanel.java:72)

   - org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelAbstract#buildGui(ScalarPanelAbstract.java:245)

   - org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelAbstract#onBeforeRender(ScalarPanelAbstract.java:199)

   - org.apache.wicket.Component#internalBeforeRender(Component.java:949)
   - org.apache.wicket.Component#beforeRender(Component.java:1017)
   - org.apache.wicket.MarkupContainer#onBeforeRenderChildren(MarkupContainer.java:1684)

   - org.apache.wicket.Component#onBeforeRender(Component.java:3833)
   - org.apache.wicket.Component#internalBeforeRender(Component.java:949)
   - org.apache.wicket.Component#beforeRender(Component.java:1017)
   - org.apache.wicket.MarkupContainer#onBeforeRenderChildren(MarkupContainer.java:1684)

   - org.apache.wicket.Component#onBeforeRender(Component.java:3833)
   - org.apache.wicket.markup.repeater.AbstractRepeater#onBeforeRender(AbstractRepeater.java:143)

   - org.apache.wicket.Component#internalBeforeRender(Component.java:949)
   - org.apache.wicket.Component#beforeRender(Component.java:1017)
   - org.apache.wicket.MarkupContainer#onBeforeRenderChildren(MarkupContainer.java:1684)

   - org.apache.wicket.Component#onBeforeRender(Component.java:3833)
   - org.apache.wicket.markup.html.form.Form#onBeforeRender(Form.java:1803)
   - org.apache.wicket.Component#internalBeforeRender(Component.java:949)
   - org.apache.wicket.Component#beforeRender(Component.java:1017)
   - org.apache.wicket.MarkupContainer#onBeforeRenderChildren(MarkupContainer.java:1684)

   - org.apache.wicket.Component#onBeforeRender(Component.java:3833)
   - org.apache.wicket.Component#internalBeforeRender(Component.java:949)
   - org.apache.wicket.Component#beforeRender(Component.java:1017)
   - org.apache.wicket.MarkupContainer#onBeforeRenderChildren(MarkupContainer.java:1684)

   - org.apache.wicket.Component#onBeforeRender(Component.java:3833)
   - org.apache.wicket.Component#internalBeforeRender(Component.java:949)
   - org.apache.wicket.Component#beforeRender(Component.java:1017)
   - org.apache.wicket.MarkupContainer#onBeforeRenderChildren(MarkupContainer.java:1684)

   - org.apache.wicket.Component#onBeforeRender(Component.java:3833)
   - org.apache.wicket.Component#internalBeforeRender(Component.java:949)
   - org.apache.wicket.Component#beforeRender(Component.java:1017)
   - org.apache.wicket.Component#internalPrepareForRender(Component.java:2201)

   - org.apache.wicket.Component#prepareForRender(Component.java:2240)
   - org.apache.wicket.ajax.XmlAjaxResponse#writeComponent(XmlAjaxResponse.java:107)

   - org.apache.wicket.ajax.AbstractAjaxResponse#writeComponents(AbstractAjaxResponse.java:218)

   - org.apache.wicket.ajax.AbstractAjaxResponse#writeTo(AbstractAjaxResponse.java:150)

   - org.apache.wicket.ajax.AjaxRequestHandler#respond(AjaxRequestHandler.java:359)

   - org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor#respond(RequestCycle.java:890)

   - org.apache.wicket.request.RequestHandlerStack#execute(RequestHandlerStack.java:64)

   - org.apache.wicket.request.RequestHandlerStack#execute(RequestHandlerStack.java:97)

   - org.apache.wicket.request.cycle.RequestCycle#execute(RequestCycle.java:261)

   - org.apache.wicket.request.cycle.RequestCycle#processRequest(RequestCycle.java:218)

   - org.apache.wicket.request.cycle.RequestCycle#processRequestAndDetach(RequestCycle.java:289)

   - org.apache.wicket.protocol.http.WicketFilter#processRequestCycle(WicketFilter.java:259)

   - org.apache.wicket.protocol.http.WicketFilter#processRequest(WicketFilter.java:201)

   - org.apache.wicket.protocol.http.WicketFilter#doFilter(WicketFilter.java:282)

   - org.eclipse.jetty.servlet.ServletHandler$CachedChain#doFilter(ServletHandler.java:1668)

   - org.apache.isis.core.webapp.diagnostics.IsisLogOnExceptionFilter#doFilter(IsisLogOnExceptionFilter.java:52)

   - org.eclipse.jetty.servlet.ServletHandler$CachedChain#doFilter(ServletHandler.java:1668)

   - org.apache.shiro.web.servlet.AbstractShiroFilter#executeChain(AbstractShiroFilter.java:449)

   - org.apache.shiro.web.servlet.AbstractShiroFilter$1#call(AbstractShiroFilter.java:365)

   - org.apache.shiro.subject.support.SubjectCallable#doCall(SubjectCallable.java:90)

   - org.apache.shiro.subject.support.SubjectCallable#call(SubjectCallable.java:83)

   - org.apache.shiro.subject.support.DelegatingSubject#execute(DelegatingSubject.java:383)

   - org.apache.shiro.web.servlet.AbstractShiroFilter#doFilterInternal(AbstractShiroFilter.java:362)

   - org.apache.shiro.web.servlet.OncePerRequestFilter#doFilter(OncePerRequestFilter.java:125)

   - org.eclipse.jetty.servlet.ServletHandler$CachedChain#doFilter(ServletHandler.java:1668)

   - org.eclipse.jetty.servlet.ServletHandler#doHandle(ServletHandler.java:581)

   - org.eclipse.jetty.server.handler.ScopedHandler#handle(ScopedHandler.java:143)

   - org.eclipse.jetty.security.SecurityHandler#handle(SecurityHandler.java:548)

   - org.eclipse.jetty.server.session.SessionHandler#doHandle(SessionHandler.java:226)

   - org.eclipse.jetty.server.handler.ContextHandler#doHandle(ContextHandler.java:1158)

   - org.eclipse.jetty.servlet.ServletHandler#doScope(ServletHandler.java:511)

   - org.eclipse.jetty.server.session.SessionHandler#doScope(SessionHandler.java:185)

   - org.eclipse.jetty.server.handler.ContextHandler#doScope(ContextHandler.java:1090)

   - org.eclipse.jetty.server.handler.ScopedHandler#handle(ScopedHandler.java:141)

   - org.eclipse.jetty.server.handler.HandlerWrapper#handle(HandlerWrapper.java:119)

   - org.eclipse.jetty.server.Server#handle(Server.java:517)
   - org.eclipse.jetty.server.HttpChannel#handle(HttpChannel.java:308)
   - org.eclipse.jetty.server.HttpConnection#onFillable(HttpConnection.java:242)

   - org.eclipse.jetty.io.AbstractConnection$ReadCallback#succeeded(AbstractConnection.java:261)

   - org.eclipse.jetty.io.FillInterest#fillable(FillInterest.java:95)
   - org.eclipse.jetty.io.SelectChannelEndPoint$2#run(SelectChannelEndPoint.java:75)

   - org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume#produceAndRun(ExecuteProduceConsume.java:213)

   - org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume#run(ExecuteProduceConsume.java:147)

   - org.eclipse.jetty.util.thread.QueuedThreadPool#runJob(QueuedThreadPool.java:654)

   - org.eclipse.jetty.util.thread.QueuedThreadPool$3#run(QueuedThreadPool.java:572)

   - java.lang.Thread#run(Thread.java:745)





On Thu, May 5, 2016 at 4:42 PM, Stephen Cameron <st...@gmail.com>
wrote:

> thanks for the rapid response, I should have looked in JIRA too, will do
> so now.
>
> On Thu, May 5, 2016 at 4:39 PM, Dan Haywood <da...@haywood-associates.co.uk>
> wrote:
>
>> Meantime, the work-around is to use a view model, eg:
>>
>>
>> import org.apache.isis.applib.annotation.Title;
>>
>> @javax.xml.bind.annotation.XmlRootElement(name = "address")
>> @javax.xml.bind.annotation.XmlType(propOrder = { "name" } )
>> public class Address implements org.apache.isis.applib.services.dto.Dto {
>>
>>     public static Address of(String name) {
>>         final Address address = new Address();
>>         address.setName(name);
>>         return address;
>>     }
>>
>>     private String name;
>>
>>     @Title
>>     public String getName() { return name; }
>>     public void setName(final String name) { this.name = name; }
>>
>> }
>>
>>
>> and then:
>>
>>
>>     final ArrayList<Address> addresses = Lists.newArrayList(
>>             Address.of("Strawberry fields"),
>>             Address.of("Penny Lane"),
>>             Address.of("Abbey Road"),
>>             Address.of("Octopuses Garden"),
>>             Address.of("Blackburn, Lancashire"),
>>             Address.of("Georgia"),
>>             Address.of("Eiffel Tower"),
>>             Address.of("Isle of Wight"));
>>
>>     public void updateStreetAddress(String field1, String field2, Address
>> field3) {
>>
>>     }
>>     public List<Address> autoComplete2UpdateStreetAddress(@MinLength(1)
>> final String search) {
>>         return
>>                 Lists.newArrayList(
>>                         FluentIterable.from(addresses).filter(x ->
>> x.getName().contains(search)).toList()
>>                 );
>>     }
>>
>>
>> nb: need to wrap the returned list in an ArrayList, else I get a "Loading
>> Failed" exception.  But that's a side issue.
>>
>>
>> I wonder if there's a ticket for this missing feature... I probably
>> should've checked JIRA first.  Anyway, if you can't find one, go ahead and
>> create a new one.
>>
>> Dan
>>
>>
>>
>>
>>
>>
>> On 5 May 2016 at 07:19, Dan Haywood <da...@haywood-associates.co.uk> wrote:
>>
>> > I see the same behaviour (ie no drop-down) on 1.11.1; the validate
>> doesn't
>> > seem to be relevant:
>> >
>> >     final ArrayList<String> addresses = Lists.newArrayList(
>> >             "Strawberry fields", "Penny Lane","Abbey Road","Octopuses
>> > Garden","Blackburn, Lancashire","Georgia","Eiffel Tower","Isle of
>> Wight");
>> >
>> >     public void updateStreetAddress(String field1, String field2, String
>> > field3) {
>> >
>> >     }
>> >     public List<String> autoComplete2UpdateStreetAddress(@MinLength(3)
>> > final String search) {
>> >         return
>> >                 FluentIterable.from(addresses).filter(x ->
>> > x.contains(search)).toList();
>> >     }
>> >
>> >
>> > Conversely, a choices field works fine for both 1.11.1 and 1.12.1:
>> >
>> >     public List<String> choices2UpdateStreetAddress() {
>> >         return addresses;
>> >     }
>> >
>> >
>> > Perhaps this never worked.  Have you seen this work in any earlier
>> > versions?
>> >
>> >
>> >
>> >
>> >
>> >
>> > On 5 May 2016 at 06:57, Dan Haywood <da...@haywood-associates.co.uk>
>> wrote:
>> >
>> >> Hmm, I can't see a mistake here.  Investigating...
>> >>
>> >> On 5 May 2016 at 03:41, Stephen Cameron <st...@gmail.com>
>> >> wrote:
>> >>
>> >>> Hi,
>> >>>
>> >>> I am trying to use autoCompleteNXxxx() for the first time and not
>> having
>> >>> any success with 1.12.1, it just doesn't seem to fire my routine at
>> all.
>> >>> I
>> >>> have the following two methods an autoComplete and a validate, the
>> first
>> >>> doesn't get used but the second does.
>> >>>
>> >>>     public List<String> autoComplete2UpdateStreetAddress(@MinLength(3)
>> >>> String search) {
>> >>>         return suburbs.listSuburbNamesLike(search);
>> >>>     }
>> >>>
>> >>>     public String validate2UpdateStreetAddress(String name) {
>> >>>         Suburb s = suburbs.suburbForName(name);
>> >>>         if (s != null) {
>> >>>             return null;
>> >>>         } else
>> >>>             return "Unknown suburb, please check spelling and use
>> proper
>> >>> case";
>> >>>     }
>> >>>
>> >>> If someone can confirm its working for them in 1.12.1 or else tell me
>> I
>> >>> have made a mistake.
>> >>>
>> >>> Steve Cameron
>> >>>
>> >>
>> >>
>> >
>>
>
>

Re: autoComplete on parameter working in 1.12.1?

Posted by Stephen Cameron <st...@gmail.com>.
thanks for the rapid response, I should have looked in JIRA too, will do so
now.

On Thu, May 5, 2016 at 4:39 PM, Dan Haywood <da...@haywood-associates.co.uk>
wrote:

> Meantime, the work-around is to use a view model, eg:
>
>
> import org.apache.isis.applib.annotation.Title;
>
> @javax.xml.bind.annotation.XmlRootElement(name = "address")
> @javax.xml.bind.annotation.XmlType(propOrder = { "name" } )
> public class Address implements org.apache.isis.applib.services.dto.Dto {
>
>     public static Address of(String name) {
>         final Address address = new Address();
>         address.setName(name);
>         return address;
>     }
>
>     private String name;
>
>     @Title
>     public String getName() { return name; }
>     public void setName(final String name) { this.name = name; }
>
> }
>
>
> and then:
>
>
>     final ArrayList<Address> addresses = Lists.newArrayList(
>             Address.of("Strawberry fields"),
>             Address.of("Penny Lane"),
>             Address.of("Abbey Road"),
>             Address.of("Octopuses Garden"),
>             Address.of("Blackburn, Lancashire"),
>             Address.of("Georgia"),
>             Address.of("Eiffel Tower"),
>             Address.of("Isle of Wight"));
>
>     public void updateStreetAddress(String field1, String field2, Address
> field3) {
>
>     }
>     public List<Address> autoComplete2UpdateStreetAddress(@MinLength(1)
> final String search) {
>         return
>                 Lists.newArrayList(
>                         FluentIterable.from(addresses).filter(x ->
> x.getName().contains(search)).toList()
>                 );
>     }
>
>
> nb: need to wrap the returned list in an ArrayList, else I get a "Loading
> Failed" exception.  But that's a side issue.
>
>
> I wonder if there's a ticket for this missing feature... I probably
> should've checked JIRA first.  Anyway, if you can't find one, go ahead and
> create a new one.
>
> Dan
>
>
>
>
>
>
> On 5 May 2016 at 07:19, Dan Haywood <da...@haywood-associates.co.uk> wrote:
>
> > I see the same behaviour (ie no drop-down) on 1.11.1; the validate
> doesn't
> > seem to be relevant:
> >
> >     final ArrayList<String> addresses = Lists.newArrayList(
> >             "Strawberry fields", "Penny Lane","Abbey Road","Octopuses
> > Garden","Blackburn, Lancashire","Georgia","Eiffel Tower","Isle of
> Wight");
> >
> >     public void updateStreetAddress(String field1, String field2, String
> > field3) {
> >
> >     }
> >     public List<String> autoComplete2UpdateStreetAddress(@MinLength(3)
> > final String search) {
> >         return
> >                 FluentIterable.from(addresses).filter(x ->
> > x.contains(search)).toList();
> >     }
> >
> >
> > Conversely, a choices field works fine for both 1.11.1 and 1.12.1:
> >
> >     public List<String> choices2UpdateStreetAddress() {
> >         return addresses;
> >     }
> >
> >
> > Perhaps this never worked.  Have you seen this work in any earlier
> > versions?
> >
> >
> >
> >
> >
> >
> > On 5 May 2016 at 06:57, Dan Haywood <da...@haywood-associates.co.uk>
> wrote:
> >
> >> Hmm, I can't see a mistake here.  Investigating...
> >>
> >> On 5 May 2016 at 03:41, Stephen Cameron <st...@gmail.com>
> >> wrote:
> >>
> >>> Hi,
> >>>
> >>> I am trying to use autoCompleteNXxxx() for the first time and not
> having
> >>> any success with 1.12.1, it just doesn't seem to fire my routine at
> all.
> >>> I
> >>> have the following two methods an autoComplete and a validate, the
> first
> >>> doesn't get used but the second does.
> >>>
> >>>     public List<String> autoComplete2UpdateStreetAddress(@MinLength(3)
> >>> String search) {
> >>>         return suburbs.listSuburbNamesLike(search);
> >>>     }
> >>>
> >>>     public String validate2UpdateStreetAddress(String name) {
> >>>         Suburb s = suburbs.suburbForName(name);
> >>>         if (s != null) {
> >>>             return null;
> >>>         } else
> >>>             return "Unknown suburb, please check spelling and use
> proper
> >>> case";
> >>>     }
> >>>
> >>> If someone can confirm its working for them in 1.12.1 or else tell me I
> >>> have made a mistake.
> >>>
> >>> Steve Cameron
> >>>
> >>
> >>
> >
>

Re: autoComplete on parameter working in 1.12.1?

Posted by Dan Haywood <da...@haywood-associates.co.uk>.
Meantime, the work-around is to use a view model, eg:


import org.apache.isis.applib.annotation.Title;

@javax.xml.bind.annotation.XmlRootElement(name = "address")
@javax.xml.bind.annotation.XmlType(propOrder = { "name" } )
public class Address implements org.apache.isis.applib.services.dto.Dto {

    public static Address of(String name) {
        final Address address = new Address();
        address.setName(name);
        return address;
    }

    private String name;

    @Title
    public String getName() { return name; }
    public void setName(final String name) { this.name = name; }

}


and then:


    final ArrayList<Address> addresses = Lists.newArrayList(
            Address.of("Strawberry fields"),
            Address.of("Penny Lane"),
            Address.of("Abbey Road"),
            Address.of("Octopuses Garden"),
            Address.of("Blackburn, Lancashire"),
            Address.of("Georgia"),
            Address.of("Eiffel Tower"),
            Address.of("Isle of Wight"));

    public void updateStreetAddress(String field1, String field2, Address
field3) {

    }
    public List<Address> autoComplete2UpdateStreetAddress(@MinLength(1)
final String search) {
        return
                Lists.newArrayList(
                        FluentIterable.from(addresses).filter(x ->
x.getName().contains(search)).toList()
                );
    }


nb: need to wrap the returned list in an ArrayList, else I get a "Loading
Failed" exception.  But that's a side issue.


I wonder if there's a ticket for this missing feature... I probably
should've checked JIRA first.  Anyway, if you can't find one, go ahead and
create a new one.

Dan






On 5 May 2016 at 07:19, Dan Haywood <da...@haywood-associates.co.uk> wrote:

> I see the same behaviour (ie no drop-down) on 1.11.1; the validate doesn't
> seem to be relevant:
>
>     final ArrayList<String> addresses = Lists.newArrayList(
>             "Strawberry fields", "Penny Lane","Abbey Road","Octopuses
> Garden","Blackburn, Lancashire","Georgia","Eiffel Tower","Isle of Wight");
>
>     public void updateStreetAddress(String field1, String field2, String
> field3) {
>
>     }
>     public List<String> autoComplete2UpdateStreetAddress(@MinLength(3)
> final String search) {
>         return
>                 FluentIterable.from(addresses).filter(x ->
> x.contains(search)).toList();
>     }
>
>
> Conversely, a choices field works fine for both 1.11.1 and 1.12.1:
>
>     public List<String> choices2UpdateStreetAddress() {
>         return addresses;
>     }
>
>
> Perhaps this never worked.  Have you seen this work in any earlier
> versions?
>
>
>
>
>
>
> On 5 May 2016 at 06:57, Dan Haywood <da...@haywood-associates.co.uk> wrote:
>
>> Hmm, I can't see a mistake here.  Investigating...
>>
>> On 5 May 2016 at 03:41, Stephen Cameron <st...@gmail.com>
>> wrote:
>>
>>> Hi,
>>>
>>> I am trying to use autoCompleteNXxxx() for the first time and not having
>>> any success with 1.12.1, it just doesn't seem to fire my routine at all.
>>> I
>>> have the following two methods an autoComplete and a validate, the first
>>> doesn't get used but the second does.
>>>
>>>     public List<String> autoComplete2UpdateStreetAddress(@MinLength(3)
>>> String search) {
>>>         return suburbs.listSuburbNamesLike(search);
>>>     }
>>>
>>>     public String validate2UpdateStreetAddress(String name) {
>>>         Suburb s = suburbs.suburbForName(name);
>>>         if (s != null) {
>>>             return null;
>>>         } else
>>>             return "Unknown suburb, please check spelling and use proper
>>> case";
>>>     }
>>>
>>> If someone can confirm its working for them in 1.12.1 or else tell me I
>>> have made a mistake.
>>>
>>> Steve Cameron
>>>
>>
>>
>

Re: autoComplete on parameter working in 1.12.1?

Posted by Dan Haywood <da...@haywood-associates.co.uk>.
I see the same behaviour (ie no drop-down) on 1.11.1; the validate doesn't
seem to be relevant:

    final ArrayList<String> addresses = Lists.newArrayList(
            "Strawberry fields", "Penny Lane","Abbey Road","Octopuses
Garden","Blackburn, Lancashire","Georgia","Eiffel Tower","Isle of Wight");

    public void updateStreetAddress(String field1, String field2, String
field3) {

    }
    public List<String> autoComplete2UpdateStreetAddress(@MinLength(3)
final String search) {
        return
                FluentIterable.from(addresses).filter(x ->
x.contains(search)).toList();
    }


Conversely, a choices field works fine for both 1.11.1 and 1.12.1:

    public List<String> choices2UpdateStreetAddress() {
        return addresses;
    }


Perhaps this never worked.  Have you seen this work in any earlier versions?






On 5 May 2016 at 06:57, Dan Haywood <da...@haywood-associates.co.uk> wrote:

> Hmm, I can't see a mistake here.  Investigating...
>
> On 5 May 2016 at 03:41, Stephen Cameron <st...@gmail.com>
> wrote:
>
>> Hi,
>>
>> I am trying to use autoCompleteNXxxx() for the first time and not having
>> any success with 1.12.1, it just doesn't seem to fire my routine at all. I
>> have the following two methods an autoComplete and a validate, the first
>> doesn't get used but the second does.
>>
>>     public List<String> autoComplete2UpdateStreetAddress(@MinLength(3)
>> String search) {
>>         return suburbs.listSuburbNamesLike(search);
>>     }
>>
>>     public String validate2UpdateStreetAddress(String name) {
>>         Suburb s = suburbs.suburbForName(name);
>>         if (s != null) {
>>             return null;
>>         } else
>>             return "Unknown suburb, please check spelling and use proper
>> case";
>>     }
>>
>> If someone can confirm its working for them in 1.12.1 or else tell me I
>> have made a mistake.
>>
>> Steve Cameron
>>
>
>

Re: autoComplete on parameter working in 1.12.1?

Posted by Dan Haywood <da...@haywood-associates.co.uk>.
Hmm, I can't see a mistake here.  Investigating...

On 5 May 2016 at 03:41, Stephen Cameron <st...@gmail.com> wrote:

> Hi,
>
> I am trying to use autoCompleteNXxxx() for the first time and not having
> any success with 1.12.1, it just doesn't seem to fire my routine at all. I
> have the following two methods an autoComplete and a validate, the first
> doesn't get used but the second does.
>
>     public List<String> autoComplete2UpdateStreetAddress(@MinLength(3)
> String search) {
>         return suburbs.listSuburbNamesLike(search);
>     }
>
>     public String validate2UpdateStreetAddress(String name) {
>         Suburb s = suburbs.suburbForName(name);
>         if (s != null) {
>             return null;
>         } else
>             return "Unknown suburb, please check spelling and use proper
> case";
>     }
>
> If someone can confirm its working for them in 1.12.1 or else tell me I
> have made a mistake.
>
> Steve Cameron
>