使用f:ajax-onevent时不更新布尔值
Boolean value not updating when using f:ajax onevent
当选择一个选项时,它会触发控制器中的方法调用,从而更改regionController.invalidRegion值(true为false,反之亦然)。问题是,在第一次更改后,该值不再在客户端更新,而是在服务器端正确更改。
我有以下js;
var renderRegionMsg = function(val){
if(val === "true"){
alert("true");
document.getElementById("NavForm:regionform:notInRegion").style.visibility = "";
}
else{
alert("false");
document.getElementById("NavForm:regionform:notInRegion").style.visibility = "hidden";
}
};
以及以下jsf代码:
<h:selectOneMenu id="regionSelect" >
<f:selectItems ...... />
<f:ajax
id="regionListener"
listener="#{geoListProducer.changeRegion}"
render="stripe-provState"
onevent="renderRegionMsg('#{regionController.invalidRegion}')" />
</h:selectOneMenu>
<h:panelGroup id="notInRegion">
<h:outputText class="red_bold" value="#{userController.invalidRegionMsg}" />
</h:panelGroup>
您使用<f:ajax onevent>
的方式不对。onevent
属性应该引用函数引用,而不是像通常在onclick
和friends上使用的那样包含内联脚本。<f:ajax>
将使用隐式data
参数调用函数引用三次。在发送ajax请求之前一次,在到达ajax响应之后一次,以及在基于ajax响应更新HTML DOM之后一次。
以下是正确用法的启动示例:
function functionName(data) {
var status = data.status; // Can be "begin", "complete" or "success".
var source = data.source; // The parent HTML DOM element.
switch (status) {
case "begin": // Before the ajax request is sent.
// ...
break;
case "complete": // After the ajax response is arrived.
// ...
break;
case "success": // After update of HTML DOM based on ajax response.
// ...
break;
}
}
声明如下:
<f:ajax ... onevent="functionName" />
在您的特定情况中,您可能需要以下方法:
function renderRegionMsg(data) {
if (data.status == "success") {
var val = data.source.value;
if (val === "true") {
alert("true");
document.getElementById("NavForm:regionform:notInRegion").style.visibility = "";
}
else {
alert("false");
document.getElementById("NavForm:regionform:notInRegion").style.visibility = "hidden";
}
}
}
带有
<f:ajax ... onevent="renderRegionMsg" />
相关文章:
- 如何从javascript/jquery中的复选框中获取布尔值
- 输入字段将't获取更新的值
- KendoUI网格行过滤器,带有布尔值下拉列表
- php布尔值's小写AND大写和数字布尔值'可以接受
- select中布尔值的Angularjs ng值不起作用
- 由于布尔值的变化,Django视图中的字符串格式不正确
- 如何动态更新输入值属性
- 将字符串转换为数组使用javascript更新一个值并返回一个字符串
- MeteorJs Alded autoform,如何从布尔值复选框中获得所需值
- 将字符串动态转换为布尔值
- 将布尔值存储在隐藏字段中以进行表单处理
- 类型错误:布尔值不是 Angular 中登录函数的函数
- 使用f:ajax-onevent时不更新布尔值
- 角度指令不会更新布尔值
- MVC 5 Razor 中的引导模式:当用户单击模式中的继续按钮时,如何将模型布尔值更新为 false
- 在我的脚本中基于布尔值更新DOM时遇到问题
- Ng显示当页面上有多个控制器的布尔值发生变化时不更新
- ng-repeat绑定集合,使用选项卡过滤布尔值,当我更新集合时,过滤器不会重新应用
- 将声明的null变量更新为布尔值
- Mongoose findByIdAndUpdate 方法,用于切换和更新数据库中的布尔值