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



我的问题的简洁版本是:如何响应

上的模糊事件
<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?与:target_id

我也试过了:

form:j_idt40:target_table:0:target_id, 
:form:j_idt40:target_table:0:target_id 

可惜运气不好。

谁能帮助我理解xpath,甚至是f:ajax和渲染视图的特定部分?

谁能帮助我理解xpath

JSF在<f:ajax>中根本不使用Xpath。它只需要一个相对或绝对的客户端ID。这在如何找出ajax更新/渲染组件的客户端ID中有详细解释?找不到带有表达式"foo"的组件引用自"bar"

您应该只更改由自动生成的ID j_idt40表示的组件,使其具有固定的ID集,否则当您稍后在视图中添加或删除组件时,它会再次中断。

相关内容

  • 没有找到相关文章

最新更新