The doCheckArtifact() method returns a FormValidation which gets rendered as a HTML response that gets injected into the page in the validation area...
https://www.youtube.com/watch?v=tNXpnufLVkc On 4 November 2015 at 20:56, Kirill <[email protected]> wrote: > Hi Stephen, > > Thanks for suggestion "*enable and disable* some of the second descriptors > via Javascript from a doCheckArtifact method's response?"! But can you > please explain how to do some actions on the page on this method response? > doCheckArtifact() will be run on server, how is it possible to customize > its effect on the config page (e.g. - to disable an entry in another > dropdown)? > > Also, can you tell more about the wrappers you mentioned, perhaps share a > link? > > P.S. Another thing regarding dropdown selection change. > http://javadoc.jenkins-ci.org/hudson/util/ListBoxModel.html says that one > can use " "updateListBox" function, defined in hudson-behavior.js". This > function doesn't seem to be there ( > https://github.com/jenkinsci/jenkins/blob/master/war/src/main/webapp/scripts/hudson-behavior.js?source=cc). > Looks like the Javadoc is wrong? > > Regards, > Kirill. > > среда, 28 октября 2015 г., 2:14:34 UTC+2 пользователь Stephen Connolly > написал: >> >> It cannot, as you have rendered the whole page before the user can >> select anything and the tag was not written to support list filtering. >> >> The way to handle this would be to use a "wrapper" for the first drop >> down and then render the second drop down within the wrapper always... >> that means you will have NxM of the second drop down instances, but >> only ever one active at any point in time... >> >> But that would be an ugly hack... >> >> Are you sure you cannot think of another way to achieve this? >> >> (e.g. could you *enable and disable* some of the second descriptors >> via Javascript from a doCheckArtifact method's response? It would seem >> reasonable to show the full list and grey out the ones that are not >> valid for the artifact selection) >> >> On 27 October 2015 at 15:34, Kirill <[email protected]> wrote: >> > Hi noble Jenkins developers! >> > >> > It's quite easy to update one simple select (<f:select />) when another >> is >> > changed (see DynamicDropDownListBox from Jenkins UI Samples plugin). >> But >> > what about case when there are two <f:dropdownList/> elements? >> > >> > I have used DropdownList from UI Samples as a sample to create these: >> > >> > <f:block> >> > <table> >> > <j:set var="currentArtifactDefinition" >> > value="${instance.artifacts}"/> >> > <f:dropdownList name="artifacts" title="Artifact"> >> > <j:forEach var="desc" >> > items="${descriptor.artifactDescriptors}" varStatus="loop"> >> > <j:set var="artifactDescription" >> > value="${desc.class.name==currentArtifactDefinition.artifactsClassName?currentArtifactDefinition:null}"/> >> >> > <f:dropdownListBlock title="${desc.displayName}" >> > value="${loop.index}" selected="${artifactDescription!=null}" >> > staplerClass="${desc.entityClass.name}"> >> > <st:include page="${desc.configPage}" >> > from="${desc}"/> >> > </f:dropdownListBlock> >> > </j:forEach> >> > </f:dropdownList> >> > </table> >> > </f:block> >> > >> > <f:block> >> > <table> >> > <j:set var="currentScheduleDefinition" >> > value="${instance.schedule}"/> >> > <f:dropdownList name="schedule" title="Schedule"> >> > <j:forEach var="desc" >> > items="${descriptor.scheduleDescriptors}" varStatus="loop"> >> > <j:set var="scheduleDescription" >> > value="${desc.class.name==currentScheduleDefinition.scheduleClassName?currentScheduleDefinition:null}"/> >> >> > <f:dropdownListBlock title="${desc.displayName}" >> > value="${loop.index}" selected="${scheduleDescription!=null}" >> > staplerClass="${desc.entityClass.name}"> >> > <st:include page="${desc.configPage}" >> > from="${desc}"/> >> > </f:dropdownListBlock> >> > </j:forEach> >> > </f:dropdownList> >> > </table> >> > </f:block> >> > >> > There are two methods in Descriptor of the build step that has this >> > config.jelly, they provide the data for both dropdowns: >> > >> > public DescriptorExtensionList<MyBuildStep.ScheduleDefinition, >> > Descriptor<MyBuildStep.ScheduleDefinition>> getScheduleDescriptors() { >> > return >> > >> Jenkins.getInstance().getDescriptorList(MyBuildStep.ScheduleDefinition.class); >> >> > } >> > >> > public DescriptorExtensionList<MyBuildStep.ArtifactDefinition, >> > Descriptor<MyBuildStep.ArtifactDefinition>> getArtifactDescriptors() { >> > return >> > >> Jenkins.getInstance().getDescriptorList(MyBuildStep.ArtifactDefinition.class); >> >> > } >> > >> > But how can I handle the change event in the first one to customize the >> > selection in the second one? >> > >> > -- >> > You received this message because you are subscribed to the Google >> Groups >> > "Jenkins Developers" group. >> > To unsubscribe from this group and stop receiving emails from it, send >> an >> > email to [email protected]. >> > To view this discussion on the web visit >> > >> https://groups.google.com/d/msgid/jenkinsci-dev/3744b377-beb9-4614-b6ec-8ac791b5e0a0%40googlegroups.com. >> >> > For more options, visit https://groups.google.com/d/optout. >> > -- > You received this message because you are subscribed to the Google Groups > "Jenkins Developers" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/jenkinsci-dev/389541f0-69a8-440f-81ce-db907b3710d1%40googlegroups.com > <https://groups.google.com/d/msgid/jenkinsci-dev/389541f0-69a8-440f-81ce-db907b3710d1%40googlegroups.com?utm_medium=email&utm_source=footer> > . > > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "Jenkins Developers" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-dev/CA%2BnPnMw4sUo%3DkUHunSxNCd0stqNMsXXoHv-5%2BG4jpo9O7N-S%2Bg%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
