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

大概这个样子
大概这个样子
然后要在这个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
太累了,爬了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值