我已经查看了有关此错误的各种其他讨论,例如识别和解决 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;
}
}
谢谢