我有一个小的Java EE项目,在intellij IDEA中使用CDI,JSF,BeanValidation和Servlet-api。我的服务器是glassfish 5.0.0,我读到它实现了servlet 4.0,cdi 2.0,jsf 2.3和bean验证2.0。

我有以下xml配置:

1.web.xml:

      <?xml version="1.0" encoding="UTF-8"?>
        <web-app 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/web-app_3_1.xsd"
                 version="3.1">
    <!--Configurations-->
        </web-app>


2.faces-config.xml:

    <faces-config version="2.2" 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/web-facesconfig_2_2.xsd">

</faces-config>


3.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_2_0.xsd">

</beans>


现在一切都很好,但是当我尝试将servlet 3.1更改为servlet 4.0,将jsf 2.2更改为jsf 2.3时,我使用表达式语言的所有jsf页面均无法正常工作,例如<h:commandButton action='#{bean.doSomething}' />不会触发事件

我做错了什么?对不起我的英语不好。

更新。

我将项目移至Maven,重新更新了所有库,并且一切正常,因此我认为问题出在配置或库错误。

最佳答案

如果有人感兴趣,则很可能是由于已知bug in Mojarra引起的。在Glassfish 5中将默认的2.3.2 javax.faces.jar更新为至少2.3.3之后,JSF将再次按预期工作。

关于java - 该项目不适用于Servlet 4.0和jsf 2.3,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51468241/

10-13 09:46