我已经用JSF+CDI+Liberty Server构建了一个简单的示例,但是我总是得到消息说我的bean的目标不可用,我不明白为什么。
我已经实现了以下库:
有可能版本有问题吗?
UserBean.java
import javax.enterprise.context.RequestScoped;
import javax.inject.Named;
@Named
@RequestScoped
public class UserBean {
private String firstName;
private String lastName;
//Getter and Setter
}
index.xhtml
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html">
<h:body>
<h1>JSF 2.2 CDI Managed Bean</h1>
<h:form>
<h:panelGrid columns="2">
<h:outputLabel value="First name" for="firstName"/>
<h:inputText id="firstName" value="#{userBean.firstName}"/>
<h:outputLabel value="Last name" for="lastName"/>
<h:inputText id="lastName" value="#{userBean.lastName}"/>
<h:commandButton action="result" value="send"/>
</h:panelGrid>
</h:form>
</h:body>
</html>
result.xhtml
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html">
<h:body>
<h1>JSF 2.2 CDI Managed Bean</h1>
First name: #{userBean.firstName}
Last name: #{userBean.lastName}
</h:body>
</html>
beans.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans bean-discovery-mode="all" version="1.1"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd">
</beans>
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" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<display-name>JavaServerFaces</display-name>
<!-- Welcome page -->
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
<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">
</faces-config>
WebSphere Liberty提供了自己的JSF特性--JSF-2.0
、JSF-2.2
和JSF-2.3
,这些特性允许应用程序使用相应的MyFaces实现。这些特性与服务器提供的CDI特性集成在一起,比如启用JSF-2.2
和CDI-1.2
将允许这种类型的应用程序在无需任何附加CDI或JSF库的情况下工作。
根据您提供的信息,这里最简单的选项是从应用程序中删除列出的删除库(jsf-*.jar
、java*.jar
),并启用JSF-2.2
和CDI-1.2
特性。
如果您有意在应用程序中绑定不同的JSF实现,那么CDI集成不会开箱即用。如果需要将CDI与应用程序绑定的JSF实现一起使用,可以使用JSFContainer-2.2
或JSFContainer-2.3
特性。见https://www.ibm.com/support/knowledgecenter/en/ss7k4u_liberty/com.ibm.websphere.liberty.autogen.nd.doc/ae/rwlp_feature_jsfcontainer-2.2.html
问题内容: 我遇到了这个问题,如果我将其取出并且停止工作,则只能使用该问题。谁能解释我的原因,可能是我做错了,以及如何解决这个问题。 使用setTimeout的示例 JXS 渲染功能 问题答案: 在看到问题的更新之后,我意识到您已经将嵌套的HTML传递给了 render 函数,并且您感兴趣的input元素确实在调用ancestor元素的 componentDidMount 时不可用。如React
我正在尝试JUnit5TestContainers快速启动示例:
问题内容: 我在使用以下代码时遇到了麻烦: 调用Offer.query({},function(){}); 在我的控制器中工作没有任何问题。但是这部分不起作用: 这总是返回400错误: “NetworkError:400错误的请求- https://api.trustyou.com/hotels/d8421e79-99f0-41b2-8d6e-9cfd62a9776b/seal.json?call
我有一个非常简单的代码。,当值正确时将显示输入。但是不起作用,我在pre中没有看到任何东西
问题内容: 我是Socket.IO的100%新手,并且刚刚安装了它。我试图遵循一些示例,并且可以使服务器端运行,但似乎无法使客户端连接。 以下是我的server.js: 这是我的index.html 当我执行node server.js时,它指示socket.io已启动。 当我加载index.html时,出现一行,指出“调试-服务静态/socket.io.js”,但除此之外,没有控制台消息或其他行
问题内容: 我正在尝试运行JavaKinesisWordCountASL示例。 该示例似乎连接到我的Kinesis Stream并从该流中获取数据(如下面的日志所示)。但是,在示例中,Sparks不会调用传递给unionStreams.flatMap方法的调用函数,并且不会打印任何单词计数。 我尝试同时使用Java 8和Java 7运行。我正在ubuntu实例上运行它。相同的示例适用于我的Macb