当尝试像EL $('figure.hello').next('blockquote').addClass("someClass");
那样引用EL中的托管bean时,有时会抛出#{bean.entity.property}
异常,通常是在设置bean属性时,或者当bean动作是调用
似乎有五种不同的消息:
答案 0 :(得分:6)
对于那些仍然被困的人......
将NetBeans 8.1和GlassFish 4.1与CDI一起使用,由于某些原因,我只在本地而不是在远程服务器上遇到此问题。诀窍是什么:
- >使用javaee-web-api 7.0而不是NetBeans提供的默认pom版本,即javaee-web-api 6.0,所以:
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-web-api</artifactId>
<version>7.0</version>
<scope>provided</scope>
<type>jar</type>
</dependency>
- &GT;将此javaee-web-api-7.0.jar作为lib上传到服务器(domain1文件夹中的lib文件夹)并重新启动服务器。
答案 1 :(得分:2)
我决定在自己解决之后分享我对这个错误的发现。
首先,应该认真对待BalusC解决方案,但Netbeans还有另一个可能的问题,特别是在使用Maven构建企业应用项目(EAR)时。
Netbeans生成父POM文件, EAR项目, EJB项目和 WAR项目 。 我项目中的其他所有内容都很好,我几乎认为问题是GlassFish 4.0中的一个错误(我必须安装并将其插入Netbeans),因为GlassFish 4.1有一个Weld CDI错误,它在Netbeans 8.0中嵌入了GlassFish 4.1。 2除了通过补丁外无法使用。
<强>解决方案:强>
要解决“目标无法访问,标识符'bean'已解析为null” 错误 -
我右键单击父POM项目,然后选择属性。出现项目属性对话框,单击“来源”,您会惊讶地看到“源/二进制格式”设置为1.5并且“编码”设置为Windows 1250。 将“源/二进制格式”更改为1.6 0r 1.7,无论您希望将项目CDI兼容,还是将“编码”更改为UTF-8。
对所有其他子项目(EAR,EJB,WAR)执行相同操作(如果它们尚不可分隔)。 运行您的项目,您将不会再次收到该错误。
我希望这可以帮助那些有类似错误的人。
答案 2 :(得分:1)
我决定分享我的解决方案,因为尽管此处提供的许多答案是有帮助的,但我仍然遇到这个问题。就我而言,我为新项目使用了JSF 2.3,jdk10,jee8,cdi 2.0,并且我确实在wildfly 12上运行了我的应用,并按照wildfly网站上的建议使用参数standalone.sh -Dee8.preview.mode = true启动了服务器。下载wildfly 13之后,“ bean解析为null”的问题消失了。将完全相同的战争上传到wildfly 13使得一切正常。
答案 3 :(得分:1)
我被卡在这个错误上是因为在具有@SpringBootApplication
的类中,我忘记指定控制器的软件包名称。
这次我想更具体地指出Spring必须扫描哪些组件,而不是配置基本软件包。
是这样的:
@ComponentScan(basePackages = {"br.com.company.project.repository", "br.com.company.project.service"})
但是正确的格式是其中之一:
@ComponentScan(basePackages = {"br.com.company.project.repository", "br.com.company.project.service", "br.com.company.project.controller"})
@ComponentScan(basePackages = {"br.com.company.project")
我决定分享自己的解决方案,因为尽管正确的答案非常全面,但并不能解决这个(愚蠢的)错误:)
答案 4 :(得分:0)
在我的情况下,我在@Named(&#34; beanName&#34;)中犯了一个拼写错误,它被认为是&#34; beanName&#34;,但是我写了#34; beanNam&#34 ;,例如。
答案 5 :(得分:0)
我正在使用wildfly 10作为javaee容器。我曾经历过“Target Unreachable,'entity'返回null”问题。感谢BalusC的建议,但我解决了解决方案的问题。 无意中使用“import com.sun.istack.logging.Logger;”而不是“import org.jboss.logging.Logger;”导致CDI实施JSF EL。 希望它有助于改善解决方案。
答案 6 :(得分:0)
我遇到了同样的问题。结果证明解决方案要简单得多。似乎数据表需要getter形式的方法,即getSomeMethod(),而不仅仅是someMethod()。在我的数据表中,我调用了findResults。我将我的支持bean中的方法更改为getFindResults()并且它工作正常。
一个commandButton工作时发现没有得到的东西只会让它变得更加混乱。
答案 7 :(得分:0)
关于#2,就我而言,它在替换后神奇地复活了
<body>
带有
的标签<h:body>
完成了几个(简单来说,很简单)的JSF项目之后,我不记得现在要进行任何其他设置了,而我第一次遇到这种错误。我创建了一个非常基本的登录页面(用户名,密码,用户Bean ...),并像往常一样设置了所有内容。我发现的唯一区别是上述标签。也许有人觉得这很有用。
答案 8 :(得分:0)
在我的情况下,问题是我包括一个带有参数的构造函数,但没有一个带有Inject注释的空构造函数,像这样。
@Inject public VisitorBean() {}
我只是在没有任何构造函数的情况下对其进行了测试,这似乎也可以工作。
答案 9 :(得分:0)
对于1.主题(无法到达目标,标识符“ bean”解析为空);
我检查了@BalusC和其他共享者的有价值的答案,但在我的方案中我超过了这个问题。 在使用不同的名称创建新的xhtml并使用不同的名称创建bean类之后,我将代码逐步(而不是复制粘贴)写入新的bean类和新的xhtml文件。
答案 10 :(得分:0)
当我从web.xml文件中删除AnnotationConfigWebApplicationContext上下文参数时,这是可行的
如果您有如下所示的param,则必须将其从web.xml文件中删除
<context-param>
<param-name>contextClass</param-name>
<param-value>
org.springframework.web.context.support.AnnotationConfigWebApplicationContext
</param-value>
</context-param>
答案 11 :(得分:0)
这也可能是Mojarra 2.3 https://github.com/eclipse-ee4j/mojarra/issues/4734
中的错误答案 12 :(得分:-1)
使用旧样式使用JSF您必须在中定义托管bean beans-config.xml 文件(位于WEB-INF文件夹中)并在 web.xml 文件中引用它,这样:
<强>豆-config.xml中强>
<managed-bean>
<managed-bean-name>"the name by wich your backing bean will be referenced"</managed-bean-name>
<managed-bean-class>"your backing bean fully qualified class name"</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
(我已尝试使用其他示波器,但......)
<强>的web.xml 强>
<context-param>
<param-name>javax.faces.CONFIG_FILES</param-name>
<param-value>"/WEB-INF/beans-config.xml</param-value>
</context-param>
答案 13 :(得分:-1)
另一条线索: 我使用的是JSF,并添加了mvn依赖项: com.sun.faces JSF的API 2.2.11
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-impl</artifactId>
<version>2.2.11</version>
</dependency>
然后,我尝试更改为Primefaces,并添加primefaces依赖项:
<dependency>
<groupId>org.primefaces</groupId>
<artifactId>primefaces</artifactId>
<version>6.0</version>
</dependency>
我将xhtml从h:更改为p:,将xmlns:p =“http://primefaces.org/ui”添加到模板中。 只有使用JSF,proyect运行正常,并且托管bean已经达到正常状态。当我添加Primefaces时,我得到了无法访问的对象(javax.el.propertynotfoundexception)。问题是JSF正在生成ManagedBean,而不是Primefaces,而我正在询问该对象的primefaces。我不得不从我的.pom中删除jsf-impl,清理并安装proyect。 从这一点开始一切顺利。 希望有所帮助。
答案 14 :(得分:-2)
EL按照说明解释$ {bean.propretyName}-假设您使用的是生成getter / setter的显式或隐式方法,则propertyName变为getPropertyName()
您可以通过将名称明确标识为函数来覆盖此行为:$ {bean.methodName()}这将直接调用函数方法Name()而不进行修改。
将访问器命名为“ get ...”并不总是正确的。
答案 15 :(得分:-3)
在我的情况下,“ el-ri-1.0.jar”丢失了。