天天看点

如何在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

太累了,爬了