我正在等待两天的时间来解决该基本问题。是的,我确实有GETTER和SETTER,是的,我真的认为约定是可以的。
这是代码:
豆 :
@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;
}
}
页面index.xhtml:
<ui:composition template="/templates/layout.xhtml"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui">
<ui:define name="content">
<h:form>
<p:panel header="Créer un Client">
<h:outputText value="Prénom : "></h:outputText>
<p:inputText id="clientName" value="#{clientController.client.name}" required="true"
requiredMessage="Entrez votre prénom" message="fc">
<f:validateLength minimum="2" />
</p:inputText>
<h:outputText value="Nom : "></h:outputText>
<p:inputText id="clientLastName" value="#{clientController.client.lastName}"
required="true" requiredMessage="Entrez votre nom" message="fc">
<f:validateLength minimum="2" />
</p:inputText>
</p:panel>
<p:commandButton value="Submit"
actionListener="#{clientController.createclient}" />
</h:form>
</ui:define>
</ui:composition>
错误:
/index.xhtml @14,57 value="#{clientController.client.name}": The class 'controllers.ClientController' does not have the property 'client'.
如您所见,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>
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>
我检查了您的代码,发现了几个问题,但是我不确定是哪个问题导致了您的问题,因为我注释掉了数据库内容以使其快速运行。
我想主要的问题是您尝试将CDI与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中的声明是通过注释进行声明的替代方法。您不需要两者。您可以在中删除manage-beans.xml
和的引用web.xml
。如果要使用此类XML声明,则可以将它们放在中faces-config.xml
。
您的web.xml包含facelets.SKIP_COMMENTS
应替换为的内容javax.faces.FACELETS_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>
也可以看看:
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句