0

我已经查看了有关此错误的各种其他讨论,例如识别和解决 javax.el.PropertyNotFoundException: Target Unreachable,但我无法解决此错误

我正在开发一个 primefaces 网络应用程序。

我正在尝试使用 p:tabView。我正在使用“值”属性定义选项卡模型。在每个选项卡中,我定义了一个表单、一个字段集和一个输出标签。

<html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:ui="http://java.sun.com/jsf/facelets"
  xmlns:h="http://java.sun.com/jsf/html"
  xmlns:p="http://primefaces.org/ui"
  xmlns:f="http://java.sun.com/jsf/core">

 <head><title>IGNORED</title></head>
 <body>
    <ui:composition template="/template/masterLayout.xhtml">
      <ui:define name="content">
        <p:tabView id="tabView" value="#{TestBean.tabs}" var="tab">
           <p:tab title="#{tab.tabId}">                 
              <h:form id="tabForm">                     
                <p:fieldset legend="FieldSet - #{tab.tabId}" binding="#{tab.fs}">
                  <p:outputLabel value="OutputLabel - #{tab.tabId}" />
                </p:fieldset>
              </h:form>                                     
           </p:tab>
        </p:tabView>
     </ui:define>
  </ui:composition>
 </body>      
</html>

当我将 'binding' 属性添加到 'p:fieldset' 时,出现错误:binding="#{tab.fs}": JBWEB006016: Target Unreachable, identifier ''tab'' resolve to null。如果我删除“绑定”属性一切正常,尽管我在其他许多标签中引用了“标签”。

我不明白为什么它没有在“绑定”属性中解析,而是在其他标签(如 outputlabel)中解析。

为什么我会收到此错误?我做错了什么?

TestBean.class 定义:

import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

@ManagedBean(name = "TestBean")
@ViewScoped
public class TestBean implements Serializable
{
  private ArrayList<TabBean> tabs = null;

  @PostConstruct
  public void init ()
  {
    tabs = new ArrayList<TabBean>();

    TabBean tab1 = new TabBean("Tab1");
    tabs.add(tab1);
    TabBean tab2 = new TabBean("Tab2");
    tabs.add(tab2);
  }

  public ArrayList<TabBean> getTabs()
  {
    return tabs;
  }

  public void setTabs(ArrayList<TabBean> tabs)
  {
    this.tabs = tabs;
  }     
}

TabBean.class 定义:

import java.io.Serializable;

import org.primefaces.component.fieldset.Fieldset;

public class TabBean implements Serializable
{
  private String tabId = null;
  private Fieldset fs = null;

  public TabBean (String tabId)
  {
    this.tabId = tabId;
  }

  public String getTabId()
  {
    return tabId;
  }

  public void setTabId(String tabId)
  {
    this.tabId = tabId;
  }

  public Fieldset getFs()
  {
    return fs;
  }

  public void setFs(Fieldset fs)
  {
    this.fs = fs;
  }
}

谢谢

4

0 回答 0