【问题标题】:Primefaces get updated bean property in Javascript [duplicate]Primefaces在Javascript中获得更新的bean属性[重复]
【发布时间】: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


【解决方案1】:

尝试使用&lt;f:param name="productViewerUrl" value="#{backController.productViewerUrl}" /&gt;,然后使用

获取 Bean 中的值
FacesContext fc = FacesContext.getCurrentInstance();
    Map<String, String> params = fc.getExternalContext().getRequestParameterMap();

    this.productViewerUrl= params.get("productViewerUrl");

或绑定数据表中的值

【讨论】:

  • 我认为您误解了这个问题。这是访问服务器端的东西。 OP 在客户端访问更新值时遇到问题。
【解决方案2】:

我找到了一个很好的解决方案,只需在 ajax 事件之后对隐藏字段执行更新,以便视图考虑 bean 属性的新值,例如:

<p:ajax event="rowDblselect" listener="#{backController.onRowDoubleClick}"
                               update="form:hutchy" oncomplete="openNewTab()"  />

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-21
    • 2013-01-26
    • 1970-01-01
    • 2018-03-05
    • 2013-06-17
    • 1970-01-01
    • 2017-01-20
    • 2012-02-04
    相关资源
    最近更新 更多