当前位置: 首页 > 知识库问答 >
问题:

带有liberty server的JSF CDI示例不起作用

赵雅懿
2023-03-14

我已经用JSF+CDI+Liberty Server构建了一个简单的示例,但是我总是得到消息说我的bean的目标不可用,我不明白为什么。

我已经实现了以下库:

  • javaee-api-7.0.jar
  • javax.servlet-api-3.1.0.jar
  • jsf-api-2.2.12.jar
  • JSF-impl-2.2.2.jar

有可能版本有问题吗?

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>

共有1个答案

田柏
2023-03-14

WebSphere Liberty提供了自己的JSF特性--JSF-2.0JSF-2.2JSF-2.3,这些特性允许应用程序使用相应的MyFaces实现。这些特性与服务器提供的CDI特性集成在一起,比如启用JSF-2.2CDI-1.2将允许这种类型的应用程序在无需任何附加CDI或JSF库的情况下工作。

根据您提供的信息,这里最简单的选项是从应用程序中删除列出的删除库(jsf-*.jarjava*.jar),并启用JSF-2.2CDI-1.2特性。

如果您有意在应用程序中绑定不同的JSF实现,那么CDI集成不会开箱即用。如果需要将CDI与应用程序绑定的JSF实现一起使用,可以使用JSFContainer-2.2JSFContainer-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