如何使用f:ajax在jsf结构的不同部分中呈现内容

时间:2013-03-11 10:36:15

标签: ajax jsf xpath

我所提问题的简洁版本如下: 我如何回应

上的模糊事件
<h:inputText> 

获取相同的值以显示在

<h:outputText> 

位于inputText字段范围之外。

inputtext字段具有以下xpath:

//*[@id="form:j_idt40:src_table:0:j_idt137"]

输出文本位于:

//*[@id="form:j_idt40:target_table:0:target_id"]

我使用的是primefaces数据表,两条路径位于两个独立的数据表中

输入字段的jsf代码如下:

<p:dataTable id="src_table">
    <p:column id="src_id" headerText="srcHeader">
        <h:inputText value="#{bean.myAttribute}">
            <f:ajax event="blur" render="src_id WHAT_SHOULD_GO_HERE?" ></f:ajax>
        </h:inputText>
    </p:column>
</p:datatable>

并且输出的代码如下

<p:dataTable id="target_table">
    <p:column headerText="TargetHeader">
        <h:outputText id="target_id" value="#{bean.myAttribute}" />
    </p:column>
</p:datatable>

我在WHAT_SHOULD_GO_HERE上尝试了几条路径?占位符,但我似乎无法做到正确。他们最终都抛出了以下的例外情况:

javax.faces.FacesException: <f:ajax> contains an unknown id ':target_id' - cannot locate it in the context of the component j_idt137

这当然是我替换了WHAT_SHOULD_GO_HERE? with:target_id

我也尝试过:

form:j_idt40:target_table:0:target_id, 

:form:j_idt40:target_table:0:target_id 

但没有运气。

任何人都可以帮助我理解xpath甚至f:ajax并渲染视图的特定部分吗?

1 个答案:

答案 0 :(得分:1)

  

任何人都可以帮助我理解xpath

JSF根本不在<f:ajax>中使用Xpath。它只需要一个相对或绝对的客户端ID。这在How to find out client ID of component for ajax update/render? Cannot find component with expression "foo" referenced from "bar"中详细解释。

您应该只更改自动生成ID j_idt40所代表的组件以设置固定ID,否则在以后添加或删除视图中的组件时它会再次中断。