将p:tab组件绑定到p:tabView var导致javax.el.PropertyNotFoundException:Target Unreachable

时间:2016-03-18 09:28:33

标签: jsf primefaces propertynotfoundexception

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

由于

0 个答案:

没有答案