JSF导航规则不适用于表单提交

时间:2015-02-12 19:47:30

标签: jsf jsf-2.2

我试图用JSF创建一个非常简单的HTML页面,在数据库中搜索某些东西,但出于某种原因,当我点击提交按钮时,没有任何反应。文本输入为空,没有其他任何事情发生。它应该转到另一个显示结果的页面。

以下是我的文件:

的index.html

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:jsf="http://xmlns.jcp.org/jsf">
<head>
<meta charset="ISO-8859-1">
<title>Accueil</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
    <div class="card">
        <h1>Cinésthésie</h1>
        <form jsf:id="Form_Recherche">
            <div class="inputWrapper">
                <input type="text" id="recherche" jsf:value="beanFilm.recherche" required><label>Que recherchez-vous ?</label>
            </div>
            <input type="submit" value="" id="searchButton" jsf:action="#{beanFilm.doRecherche}"/>
        </form>
    </div>
</body>
</html>

面-config.xml中

<?xml version="1.0" encoding="UTF-8"?>
<faces-config
    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"
    version="2.2">
    <managed-bean>
        <managed-bean-name>beanFilm</managed-bean-name>
        <managed-bean-class>bean.BeanFilm</managed-bean-class>
        <managed-bean-scope>session</managed-bean-scope>
    </managed-bean>
    <navigation-rule>
        <display-name>index.html</display-name>
        <from-view-id>/index.html</from-view-id>
        <navigation-case>
            <from-outcome>toResultatsRecherche</from-outcome>
            <to-view-id>/resultatsRecherche.html</to-view-id>
        </navigation-case>
    </navigation-rule>

</faces-config>

BeanFilm.java

public class BeanFilm implements Serializable {

    private static final long serialVersionUID = 1L;

    private String recherche = new String();

    public String getRecherche() {
        return recherche;
    }

    public void setRecherche(String recherche) {
        this.recherche = recherche;
    }

    public String doRecherche() {
        return "toResultatsRecherche";
    }

    public List<Film> getResultatsRecherche() {
        return DAOFilmJPA.getInstance().getFilmsByTitle(recherche);
    }

}

我现在已经尝试了几个小时,我一定错过了一个重要的观点。 有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我找到了办法。

我似乎没有渲染的jsf标签所以我将每个html文件切换为xhtml并在web.xml中更改了此

<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>/faces/*</url-pattern>
</servlet-mapping>

到这个

<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.xhtml</url-pattern>
</servlet-mapping>

它解决了这个问题,但现在我需要尊重xhtml严格的语法,而我尝试使用HTML5。有什么建议吗?