Java JSF:PropertyNotFoundException类'';没有属性'';
两天来,我一直在寻找解决这个基本问题的办法。是的,我有接二连三,是的,我真的认为大会是可以的 代码如下: 豆子:Java JSF:PropertyNotFoundException类'';没有属性'';,java,jsf,el,Java,Jsf,El,两天来,我一直在寻找解决这个基本问题的办法。是的,我有接二连三,是的,我真的认为大会是可以的 代码如下: 豆子: @Named @SessionScoped public class ClientController implements Serializable { @Inject private ClientService das; private List<Client> clientsList; public void setClientsList(List<Clie
@Named
@SessionScoped
public class ClientController implements Serializable {
@Inject
private ClientService das;
private List<Client> clientsList;
public void setClientsList(List<Client> clientsList) {
this.clientsList = clientsList;
}
private Client client = new Client();
public Client getClient() {
return client;
}
public void setClient(Client client) {
this.client = client;
}
public void createclient(ActionEvent actionEvent) {
das.create(client);
}
public List<Client> getClientsList() {
clientsList = das.findByNativeQuery(Client.ALL);
return clientsList;
}
}
正如您所看到的,Bean被解析,甚至createclient()方法也被解析(我尝试在没有剩余代码的情况下测试它)。问题只是关于属性
请帮忙?我相信这是一个愚蠢的问题,但有时我们只是需要另一种观点
编辑:
WEB-INF/WEB.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<display-name>Bourse</display-name>
<!-- Current project stage. When it is set to 'Development' Primefaces give
a lot of debug information on the screen. -->
<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Development</param-value>
</context-param>
<context-param>
<param-name>facelets.SKIP_COMMENTS</param-name>
<param-value>true</param-value>
</context-param>
<welcome-file-list>
<welcome-file>/index.xhtml</welcome-file>
</welcome-file-list>
<!-- Staring JSF -->
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- JSF URL mapping -->
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
<context-param>
<param-name>javax.faces.CONFIG_FILES</param-name>
<param-value>/WEB-INF/manage-beans.xml</param-value>
</context-param>
</web-app>
交易所
javax.faces.PROJECT_阶段
发展
facelets.SKIP_注释
真的
/index.xhtml
Facesservlet
javax.faces.webapp.FacesServlet
1.
Facesservlet
*.xhtml
javax.faces.CONFIG_文件
/WEB-INF/manage-beans.xml
WEB-INF/manage-beans.xml:
<?xml version="1.0" encoding="UTF-8"?>
<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
version="2.0">
<managed-bean>
<managed-bean-name>clientController</managed-bean-name>
<managed-bean-class>controllers.ClientController</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
</faces-config>
客户端控制器
controllers.ClientController
一场
要在JSF2.0中启用CDI,需要使用beans.xml或faces-config.xml来定义托管bean。建议使用单独的文件来配置bean,因为faces-config.xml将具有特定于应用程序的配置。请阅读本文,以了解CDI的工作原理。请注意,CDI基于JavaEE版本工作
更新:
您需要检查xhtml页面中的每个地方是否正确命名bean,并确保正确加载了类和配置文件我检查了您的代码,发现有几个问题,但我不确定是哪一个问题导致了您的问题,因为我注释掉了数据库内容以使其快速工作 我想主要的问题是,您试图将CDI与JSF管理的bean一起使用,而JSF管理的bean不应该毫无问题地工作
javax.faces.bean.SessionScoped
和javax.faces.bean.ManagedBean
,但是您应该使用javax.enterprise.context.SessionScoped
和javax.annotation.ManagedBean
甚至javax.inject.Named
而不是ManagedBean
。请查看以获取有关差异的详细信息manage beans.xml
中包含的内容通常属于faces config.xml
,但无论如何都是过时的,因为xml中的声明是通过注释进行声明的替代。你不需要两者兼而有之。您可以删除managebeans.xml
和web.xml
中的引用。如果您想使用这样的XML声明,您可以将它们放在faces config.XML
中facelets.SKIP_COMMENTS
,应替换为javax.faces.facelets\u SKIP_COMMENTS
beans.xml
。您在评论中写道,您已经创建了一条评论,无论如何,这里有一个参考,它应该是什么样子的:<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
</beans>
另见:
value="# {clientController.client.lastName}"
^here this is not valid for EL
在您按照所有其他建议进行更改后,您的异常应该会消失。在我的例子中,我只是更改了变量的名称,目标文件夹没有反映这些更改。因此,当我编译和重新部署时,它对我很有效 你能在你的类中添加@ManagedBean(name=“clientController”)并检查吗?@Octopus好主意,我刚刚试过,但没有,同样的问题。我确实认为问题不在于bean名称解析。可能是另一个文件中的配置问题?您有beans.xml或faces config.xml吗?没有,我认为这就是问题所在,但我不知道该放在它上面什么,放在哪里。我发现这段代码()的示例确实提供了一些,但没有提到itCheck out这个链接中的控制器-。您将知道如何以及在何处定义托管Bean我刚刚配置了beans.xml和web.xml,但问题是相同的。。。我将编辑帖子,给出他们的内容也许你可以在项目中查看来源:来源有什么想法吗?对不起,我也不明白为什么会发生这种情况?谢谢你的完整答案。这确实对我有帮助,我最终加载了一个催人泪下的页面:),但现在bean就是无法访问:标识符'clientController'解析为null。顺便说一句,我正试图修复它(我选择了一个@namedbean,在这种情况下查看您关于任何其他配置的链接)嗯,我的项目中没有它。。。可能是IDE配置问题?无论如何,感谢您尝试帮助我:)如果您复制/粘贴了代码,它会出现在index.xhtml上,通常这是导致
PropertyNotFoundException
的原因。但是如果你说不是,你应该修改所有其他的value
属性,看看它是否正确映射。哦,你是对的,似乎我在编辑粘贴的代码以格式化我的帖子时犯了一个错误(这里的第一篇帖子,真是个新手)
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
</beans>
value="# {clientController.client.lastName}"
^here this is not valid for EL