我已经查看了有关此错误的各种其他讨论,例如Identifying and solving javax.el.PropertyNotFoundException: Target Unreachable,但我无法解决此错误
我正在开发一个primefaces Web应用程序。
我正在尝试使用p:tabView。我正在使用“value”属性定义选项卡模型。在每个标签内,我定义了一个表单,一个字段集和一个输出标签。
<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 is Rereachable,标识符''tab''被解析为null。如果我删除'绑定'属性一切正常,虽然我在其他许多标签中引用'tab'。
我没有理解为什么它没有在'binding'属性中解析,但它在其他标签中解决,例如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;
}
}
由于