【问题标题】:need clarification on JSF and managed beans需要澄清 JSF 和托管 bean
【发布时间】:2016-03-17 22:45:06
【问题描述】:

我有一些我无法理解的行为, 所以我最近开始学习 JSF,我使用的是 TOMCAT 6,现在我创建了 JSF 文件,我在不同的包下创建了两个托管 Bean,但每个 bean 具有相同的名称。 1.第一个bean是com.app.TestBean。 2. 第二个 bean 是 jsftest.TestBean. 现在当我调用我的 JSF 页面时,我会调用第一个 bean,如果我重新启动 TOMCAT,我会得到第二个 bean 的结果,任何人都可以解释我在这里做错了什么吗?

【问题讨论】:

  • 我可以知道你为什么给这个问题 -1 吗?

标签: jsf managed-bean


【解决方案1】:

除非您明确指定它们的名称,否则 bean 的名称/id 会根据它们的类名分配。

所以 TestBean 将是:testBean

因此,如果您有冲突的类名,则需要明确指定它们的(不同)名称。

例如,如果您正在使用注释(我怀疑是这种情况),您需要这样做

package com.app;

@ManagedBean("testBean1")
public class TestBean {
  ...
}

还有另一个豆子

package jsftest;

@ManagedBean("testBean2")
public class TestBean {
  ...
}

然后使用 #{testBean1} 或 #{testBean2}

【讨论】:

  • 我知道这种方法,但我希望能解释为什么会发生这种情况?为什么 JSF 不考虑包名。
  • 不,它只使用类名,所以如果多个类具有相同的类名,它们会发生冲突
猜你喜欢
  • 2013-12-23
  • 2012-10-13
  • 1970-01-01
  • 2012-02-21
  • 2011-06-27
  • 2023-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多