天天看點

如何在JSF界面中實作URL傳參如何在JSF界面中實作URL傳參

如何在JSF界面中實作URL傳參

采用JSF2.1,JavaEE7平台

這個問題困擾了很久了,廢話不多說直接上代碼

首先我們URL在浏覽器裡面傳參的格式是

http://localhost:8080/Nice_test/searcher.xhtml?param=4

其中?後面的param是我們所傳輸的參數

由于JSF檔案字尾名是.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>/faces/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
           

然後采用`h:outputLink作為标準H5中<a herf=>的替代,這裡面的selectpage是一個大的清單循環,outputLink後面的param裡面是我們所需要的數值,最後面是按鈕

<div id="select-page">
        <ui:repeat var="temp" value="#{searchTest.selectPage}">
                <h:outputLink value="searcher.xhtml?param=#{temp.herfTag}">
                        <span class="#{temp.selectPageList}">#{temp.spanTag}</span>
                </h:outputLink>
        </ui:repeat>
</div>
           

大概這個樣子

如何在JSF界面中實作URL傳參如何在JSF界面中實作URL傳參

然後要在這個xhtml的頭部定義如下内容

<head jsf:id="head">
        <meta charset="utf-8" />

        <link jsf:name="style/searcher.css" rel="stylesheet" type="text/css" />
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <f:metadata>
            <f:viewParam name="param" id="param" value="#{searchTest.param}"/>
            <f:viewAction action="#{searchTest.init}" />
        </f:metadata>
        <title>北郵 BUPT 搜尋引擎</title>
    </head>
           

兩個f:metadata中間的是我們加入的東西

最後在Bean中定義如下java代碼

private static int param = 1;
 
    public int getParam() {
        CURRENT_PAGE = param;
        System.err.println("getParam   view action into here,param value is "+this.param);
        return param;
    }
 
    public void setParam(int param) {
        System.err.println("setParam   view action into here,param value is "+this.param);
        this.param = param;
    }
 
    public void init(){
        CURRENT_PAGE = param;
        System.err.println("Init     view action into here,param value is "+this.param);
        
    }
           

就可以實作jsf中通過URL傳參給後端Java了

個人建議采用@SessionScoped

太累了,爬了