如何在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
太累了,爬了