【发布时间】:2019-03-19 13:31:35
【问题描述】:
在我看来,我有一个 ajax 行为,它带有一个更新 bean 属性的侦听器,然后是一个执行 javascript 方法的“oncomplete”操作
这是 ajax 事件:
<p:ajax event="rowDblselect" listener="#{backController.onRowDoubleClick}"
oncomplete="openNewTab()" />
<h:inputHidden id="hutchy" value="#{backController.productViewerUrl}" />
这是应该更新属性的 bean 方法:
public void onRowDoubleClick(final SelectEvent event) {
RecordDTO currentRecordDTO = (RecordDTO) event.getObject();
setProductViewerUrl("https://www.google.com/search?q=" + currentRecordDTO.getName());
}
public String getProductViewerUrl() {
return productViewerUrl;
}
public void setProductViewerUrl(String productViewerUrl) {
this.productViewerUrl = productViewerUrl;
}
然后,使用更新属性的 javascript 方法:
function openNewTab(){
var url = $('#pbm\\:hutchy').val();
var hiddenCode = "#{backController.productViewerUrl}";
alert(url + hiddenCode);
window.open(url, '_newtab');
}
问题是Javascript的代码没有获取到属性的更新值(即使有隐藏字段),我在DoubleClick事件后做了一些调试,发现执行没有通过执行JS时属性的getter方法(alert之前)
有人有想法吗?提前致谢!
【问题讨论】:
-
只要确保您“更新”了
openNewTab所在的html 部分并且它已更新。或者更新隐藏的输入并使用一段 javascript 读取该输入。所有这些在 Stackoverflow 中都有重复...我会尝试找到一个
标签: javascript jsf primefaces