我正在写一个jenkins插件。
为此,我想使用一个功能,原则上是这个示例ui插件中的dynamicdropdownlistbox。
源代码后的问题描述。
代码
我已经包含了一个使用伪代码的问题示例。我的ui由一个jelly文件使用
<f:entry title="Field A" field="fieldA"-->
<s:cselect/>
</f:entry>
<f:entry title="Field B" field="fieldB"-->
<s:cselect/>
</f:entry>
结合我的java方法。对于每个dropdownlistbox,可以实现dofill…-方法,该方法返回dropdownlistbox的内容。
public ListBoxModel doFillFieldA() {
final StandardListBoxModel result = new StandardListBoxModel();
// Fill the listbox with items
return result;
}
public ListBoxModel doFillFieldB(@QueryParameter String fieldA) {
final StandardListBoxModel result = new StandardListBoxModel();
// Fill the listbox with items
return result;
}
描述
这允许我使用从dropdownlistbox字段a选择的值并返回dropdownlistbox字段b的内容,该内容取决于dropdownlistbox字段a的选择。
为了让这一切顺利进行, @QueryParameter String fieldA
(这是所选的值)必须为字段b**(在这种情况下,下拉字段a必须至少包含一个值)的dofill…*-方法所知,知道应该显示哪些项。到现在为止,一直都还不错。。。?不。
问题
与示例不同,我遇到了一个问题:
dropdownlistboxfield a的内容需要在另一个方法中(需要几秒钟)之前获取。
因此, doFillFieldA
需要等待此方法完成。
这个 doFillFieldB
然后必须等待 doFillFieldA
直到完成,才知道价值所在 @QueryParameter String fieldA
(见下文),否则为空。
结论: doFillFieldA
正在使用等待“获取方法” sleep
(丑陋,但有效)但是 doFillFieldB
也会同时执行(当dropdownlistboxfield a未填充任何值时)。这将导致填充dropdownlistboxfield a,具体取决于 @QueryParameter String fieldA
哪个是 Null
.
注意:如果说在执行ajax更新时调用dofill方法(我认为)可能是相关的。这意味着,我不知道如何手动调用它们。现在我想解决这两个问题
重新回忆 doFillFieldB
填充dropdownlistboxfield a后,要考虑选定的值
不知怎的说 doFillFieldB
等待执行,直到dropdownlistboxfield a被填充。
在“获取方法”完成后手动执行ajax更新?
一个不同的解决方案来解决这个问题。
暂无答案!
目前还没有任何答案,快来回答吧!