如何在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>
大概這個樣子
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnL5QTN1UjM0AjM1ATOwkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
然後要在這個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
太累了,爬了