用ajax事件来表示附加属性



我有这个tabview组件:

<p:tabView id="tabView"
        var="tab"
        dynamic="true"
        cache="true"
        value="#{integrationBean.tabs}">
        <p:ajax event="tabChange"
            listener="#{integrationBean.tabChanged}"
            update="tabContent"/>

我需要传递属性到ajax请求。比如

<p:ajax event="tabChange"
                listener="#{integrationBean.tabChanged}"
                update="tabContent">
<f:param name="id" value="#{integrationBean.id}" />
<!-- OR -->
<f:attribute name="id" value="#{integrationBean.id}" />
<!-- Neither of this works -->
</p:ajax>

所以我可以做

@Value("#{request.getParameter('id')}")
protected Long id;

on my bean。如何将此参数传递给请求?

使用<p:remoteCommand>

<p:ajax event="tabChange" oncomplete="tabChangeCommand()" />
<p:remoteCommand name="tabChangeCommand" actionListener="#{integrationBean.tabChanged}" update="tabContent">
    <f:param name="id" value="#{integrationBean.id}" />
</p:remoteCommand>

在xhtml中使用<f:param/>

<f:param name="id" value="#{integrationBean.id}" />

您可以使用ExternalContext#getRequestParameterMap()从备份bean中检索它

Map<String, String> map = (Map<String, String>) externalContext.getRequestParameterMap();
String paramValue= map.get("paramName");

通过将id放入flash作用域并在ajax请求中获取它来解决此问题。这不是理想的解决方案,但它有效。

相关内容

  • 没有找到相关文章

最新更新