在树节点 select 后端 bean 正在获取 selected 数据但未更新右面板表单数据

On tree node select Back-end bean is getting selected data but not updating Right Panel form data

My Ui is like attached image 我面临的问题是在树节点选择上,我的后端 bean 正在获取选定数据但未使用选定节点数据更新右侧面板表单:
另一件事我注意到,在节点选择之后,如果我刷新页面,它会反映所选的节点数据
详情:
[1] 我在一个屏幕上工作,员工和公司被表示为一个树表,其中公司名称是父节点,员工是子节点。

employeeList.xhtml:

<h:form id="employeeListForm">
    <p:treeTable id="empTree" widgetVar="empTree"
        value="#{employee.rootEmployeeNode}" var="item"
        selection="#{employee.selectedEmployeeNode}"
        selectionMode="single" rendered="#{employee.filteredEmployees== null}">
        <p:ajax event="select" listener="#{employee.onEmployeeNodeSelect}"
            update=":employeeEditForm">
        </p:ajax>
        <p:column headerText="#{o:translate('Name')}" priority="1">
            <h:outputText value="#{item.name}" title="#{item.name}"></h:outputText>
        </p:column>
        <p:column headerText="#{o:translate('Description')}" priority="2">
            <h:outputText value="#{item.description}" title="#{item.description}"></h:outputText>
        </p:column> 
    </p:treeTable>
<h:form>

在选择 TreeNode 时,我在右侧面板中显示员工详细信息,即 employeeEditForm 我的 employeeEditForm.xhtml 是:

<ui:composition ...>    
    <h:form id="employeeEditForm">
        <!-- form components to display employee details -->                        
    </h:form>
</ui:composition>

注意:请帮助我了解如何处理此问题。

您引用了 ui:define

的名称
<ui:define name="mainContent">
    <ui:include src="..." />
</ui:define>

p:ajax update属性中

<p:ajax event="select" listener="..." update=":mainContent,:employeeEditForm" />

这不是它的工作原理(在开发模式下,您很可能会遇到错误)。您应该更新具有 id 属性并且是 jsf 组件的东西(其中 ui:* 不是

但还有其他不清楚的地方,

另见

  • 似乎是一个存在的问题甚至:refresh a <ui:define> in jsf
  • How to ajax-refresh dynamic include content by navigation menu? (JSF SPA)

我已经使用 javascript 进行了临时修复,我创建了一个函数来重新加载我的 employeeEditForm:

  <script type="text/javascript">
      function updateEmployeeEditForm() {
          $( "#employeeEditForm" ).load(window.location.href + " #employeeEditForm" ); 
    } 
</script>

我在成功时调用的函数如下:

<p:ajax event="select" listener="#{employee.onEmployeeNodeSelect}" update=":employeeEditForm" onsuccess="updateEmployeeEditForm()">