我正在使用 JSF 2.0、jQuery 1.8.2 和 jQueryMobile 1.2.0
我有两个选择菜单,其中第二个菜单的源值取决于第一个选择菜单的选择(值由支持 bean 函数加载)。我的问题是当我在第一个选择菜单中选择选项时,我无法正确更新第二个选择菜单。
<h:form id="testForm" prependId="false">
<h:selectOneMenu id="testValues" value="#{model.testValue}" >
<f:selectItems
value="#{bean.getTestValues()}"
var="object"
itemLabel="#{object.label}"
itemValue="#{object.value}" />
<f:ajax render="testValues2" onevent="initForm"/>
</h:selectOneMenu>
<h:selectOneMenu id="testValues2" value="#{model.testValue2}">
<f:selectItems
value="#{bean.getTest2Values(model.testValue)}"
var="object2"
itemLabel="#{object2.label}"
itemValue="#{object2.value}" />
</h:selectOneMenu>
</h:form>
<script type="text/javascript">
function initForm(){
$("#testForm").trigger('create');
};
</script>
当我这样做时,未正确创建 testValues2 菜单。某事:像这样:
<div class="ui-select"> <!-- menuselect before update... -->
<div>...</div> <!-- here is selected option from testValues2 before update -->
<div class="ui-select">...</div> <!-- menu with updated values-->
</div>
很明显,我只想在更新后正确显示菜单。我试图通过以下方式刷新第二个选择菜单:
$('#testValues2').selectmenu('refresh');
或者
$('#testValues2').selectmenu();
$('#testValues2').selectmenu('refresh');
但它没有帮助(我有错误Error: cannot call methods on selectmenu prior to initialization; attempted to call method 'refresh'
:)
此外,我无法通过<f:ajax render=":testForm"
/> 呈现所有表单,因为表单上有我不想刷新的其他字段。
请帮忙。