我们正在从Jsf 1.2迁移到2.0,并且使用servlet通过ajax更新了下拉值的验证问题。
今天发生的事情是当下拉A被改变时,下拉B的值是通过使用servlet的ajax调用获取的,而在Jquery中,B的下拉值是根据Ajax结果而改变的。在迁移到JSF 2.0之后,我们在提交表单时会收到下拉B的无效值问题,因为面对未知更新的下拉值,因此想知道为什么它在JSF 1.1中工作但不能在2.0中工作。 bean是requestcoped
我知道f:ajax有2.0但是由于时间限制,我们将尽可能保持servlet调用ajax。
JSP
<t:datalist value ='#{bean.locations}' var='loc'>
<h:selectOneMenu id="country" value="#{loc.country}" onchange ='getStateListThroughServletAjax(this)'>
<f:selectItems value ='#{loc.countryList}'/>
</h:selectOneMenu>
<h:selectOneMenu id='states' value ='#{loc.state}'>
<f:selectItems value='#{loc.stateList}'/>
</h:selectOneMenu>
</t:datalist>
的Javascript
function getStateListThroughServletAjax(country){
//this get the Statelist based on country selected by hitting the servlet
var params = 'countryId='+ country.value;
$.ajax({type: "POST", url: '\loadStates',data: params,
success: function(response) {
jsonResult = jQuery.parseJSON(response);
//setComboOptions for state dropwdown based on JsonResult
setComboOptionsForState(jsonResult)
}
});
}
任何时候我更改国家/地区我都会获得一个新的州名单,但在保存时我会得到&#34;验证错误:值无效&#34;。
赞赏任何输入