0

我有一个在前端运行 JSF2.0 的应用程序。在后端,而不是使用托管 bean,我使用了焊接的命名 bean。有问题的 bean 被注释为 @Named @Singleton @Startup 并且是一个 EJB Singleton。bean 获取顶级类别来填充前端。在前端的顶级导航中,我的代码看起来像这样

<h:dataTable var="items" value="#{topCategorySingleton.topCat}">
<h:column>
<h:commandLink class="menu-link" action="#{categoryBackingBean.category}">
<f:setPropertyActionListener target="#{categoryBackingBean.catID}" value="#{item.sku}" />
 <h:outputText value="#{item.title}" />
 </h:commandLink>
 </h:column>
 </h:dataTable>

当此代码运行时,我收到一条错误消息,指出 javax.servlet.ServletException:类 'com.webintel.backingbeans.org$jboss$weld$bean-testing-SessionBean-CategoryBackingBean_$$_WeldProxy' 没有属性 'category'。

我认为 commandLink 的 action 属性应该绑定到 bean 的方法,而不是属性?有人有想法么?

启动时@Singleton 启动,代码如下:

@Singleton
@Named
@Startup
@ConcurrencyManagement(CONTAINER)
public class TopCategorySingleton{
  public TopCategoryStingleton(){}
  private int sku;
  private String title;
  private List<TopCategorySingleton> topCat;
....getters and setters
  public void getTop_Cat(){
   ....logic
   setTopCat(List<TopCateogrySingleton>);
  }

然后支持 bean 代码如下所示:

@Stateless
@Named
@RequestScoped
public class CategoryBackingBean{
  public CategoryBackingBean(){}
  private int catID;
  ....getters and setters
  public String category(){
    ...logic
    if(!true){
      return "error";
    }
    return "success";
  }

由于某种原因,它仍然没有将 categoryBackingBean.category 绑定到该方法。我正在使用 Java 6 的 Glassfish 3.1 服务器上运行此应用程序。在此先感谢您的帮助。

4

0 回答 0