无法使其在 JSF 测试项目中运行
Unable to make it working a JSF test project
我试图为 JSF
(Primefaces
) 创建一个测试项目,但它不起作用。测试视图不调用托管 bean。
这是托管 bean:
package it.myPrimefacesTest.controller;
import java.io.Serializable;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
@ViewScoped
@ManagedBean(name="helloWorld", eager=true)
public class HelloWorld implements Serializable {
private static final long serialVersionUID = 7184399511928573344L;
@SuppressWarnings("static-method")
public String getMessage() {
return "Hello World!";
}
}
这是test.xhtml
:
<!DOCTYPE html>
<f:view xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
contentType="text/html"
>
<html>
<h:head></h:head>
<body>
ciao!
<h:inputText></h:inputText>
<h:outputText value="#{helloWorld.getMessage()}"></h:outputText>
</body>
</html>
</f:view>
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_3_0.xsd" version="3.0">
<display-name>MyPrimefacesTest</display-name>
<servlet>
<servlet-name>MyPrimefacesTest</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>MyPrimefacesTest</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>MyPrimefacesTest</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
<context-param>
<param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
<param-value>true</param-value>
</context-param>
<welcome-file-list>
<welcome-file>test.xhtml</welcome-file>
</welcome-file-list>
</web-app>
faces-config.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_1.xsd"
version="2.1"
>
</faces-config>
<h:outputText value="#{helloWorld.getMessage()}"></h:outputText>
在 test.xhtml
中不起作用。
我正在使用:
Java
7
Eclipse
JBoss
7.1.1
这是因为我的项目是这样创建的,我想成为1:1。
这是项目:https://ufile.io/ihd8j37g。您必须点击免费下载,然后点击慢速。
如果您尝试检查已部署的耳朵,您会发现 MyPrimefacesTest.war
里面只有 PF jar、faces-config.xml
和 web.xml
,没有 .class
文件。
如果您将项目导出到一个 ear 文件中也是一样。
由于未部署编译代码,因此不可能在 运行 时 运行 它。
如果您在 war 中导出 MyPrimefacesTest 输出文件夹,您会发现问题已解决。
为此,您可以尝试替换
<classpathentry kind="src" path="src"/>
和
<classpathentry kind="src" output="build/classes" path="src"/>
在 MyPrimefacesTest
的 .classpath
文件中。
根据您的需要,您可以选择多种方式来实现此目标:
- 修改类路径
- 修改清单
- 如果您使用 Maven,您可以根据需要修改 pom.xml,gradle 或者如果您使用 ant 脚本
也是如此
记得在部署新耳朵之前清理你的服务器(对于较低的 jBoss 版本,清理部署目录也很有用)。
已修复。感谢 为我提供了正确的建议。这就是我在 Project -> Properties
:
中所做的
Java Build path -> Source -> Default output folder
:设置为MyPrimefacesTest/build/classes
Deployment Assembly
-> Add
-> Folder
-> src
,然后我将部署路径设置为 WEB-INF/classes
- 重启电脑(迷信...)
- 前往 JBoss
standalone
文件夹,删除子文件夹 data
、log
和 tmp
并清空 deployments
文件夹
- 启动 Eclipse
- 清理项目和 EAR 项目
- 转到服务器。如果您的服务器有除此之外的其他 EAR,请删除它们。确保在启动此服务器之前清除其他服务器。
- 清除服务器
- 启动服务器
- 祈祷:D
我试图为 JSF
(Primefaces
) 创建一个测试项目,但它不起作用。测试视图不调用托管 bean。
这是托管 bean:
package it.myPrimefacesTest.controller;
import java.io.Serializable;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
@ViewScoped
@ManagedBean(name="helloWorld", eager=true)
public class HelloWorld implements Serializable {
private static final long serialVersionUID = 7184399511928573344L;
@SuppressWarnings("static-method")
public String getMessage() {
return "Hello World!";
}
}
这是test.xhtml
:
<!DOCTYPE html>
<f:view xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
contentType="text/html"
>
<html>
<h:head></h:head>
<body>
ciao!
<h:inputText></h:inputText>
<h:outputText value="#{helloWorld.getMessage()}"></h:outputText>
</body>
</html>
</f:view>
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_3_0.xsd" version="3.0">
<display-name>MyPrimefacesTest</display-name>
<servlet>
<servlet-name>MyPrimefacesTest</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>MyPrimefacesTest</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>MyPrimefacesTest</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
<context-param>
<param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
<param-value>true</param-value>
</context-param>
<welcome-file-list>
<welcome-file>test.xhtml</welcome-file>
</welcome-file-list>
</web-app>
faces-config.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_1.xsd"
version="2.1"
>
</faces-config>
<h:outputText value="#{helloWorld.getMessage()}"></h:outputText>
在 test.xhtml
中不起作用。
我正在使用:
Java
7Eclipse
JBoss
7.1.1
这是因为我的项目是这样创建的,我想成为1:1。
这是项目:https://ufile.io/ihd8j37g。您必须点击免费下载,然后点击慢速。
如果您尝试检查已部署的耳朵,您会发现 MyPrimefacesTest.war
里面只有 PF jar、faces-config.xml
和 web.xml
,没有 .class
文件。
如果您将项目导出到一个 ear 文件中也是一样。
由于未部署编译代码,因此不可能在 运行 时 运行 它。
如果您在 war 中导出 MyPrimefacesTest 输出文件夹,您会发现问题已解决。
为此,您可以尝试替换
<classpathentry kind="src" path="src"/>
和
<classpathentry kind="src" output="build/classes" path="src"/>
在 MyPrimefacesTest
的 .classpath
文件中。
根据您的需要,您可以选择多种方式来实现此目标:
- 修改类路径
- 修改清单
- 如果您使用 Maven,您可以根据需要修改 pom.xml,gradle 或者如果您使用 ant 脚本 也是如此
记得在部署新耳朵之前清理你的服务器(对于较低的 jBoss 版本,清理部署目录也很有用)。
已修复。感谢 Project -> Properties
:
Java Build path -> Source -> Default output folder
:设置为MyPrimefacesTest/build/classes
Deployment Assembly
->Add
->Folder
->src
,然后我将部署路径设置为WEB-INF/classes
- 重启电脑(迷信...)
- 前往 JBoss
standalone
文件夹,删除子文件夹data
、log
和tmp
并清空deployments
文件夹 - 启动 Eclipse
- 清理项目和 EAR 项目
- 转到服务器。如果您的服务器有除此之外的其他 EAR,请删除它们。确保在启动此服务器之前清除其他服务器。
- 清除服务器
- 启动服务器
- 祈祷:D