我想将参数从jsf页面传输到另一个jsf页面。像这样:
a.xhtml
<h:form>
<h:commandLink class="navi" value="press"
action="#{Bean.action}">
<f:param name="id" value="5555" />
</h:commandLink>
</h:form>
Bean.java
public String action() {
HttpServletRequest request = (HttpServletRequest) FacesContext
.getCurrentInstance().getExternalContext().getRequest();
String param = request.getParameter("id");
return "b?id=" + param;
}
b.xhtml
<h:inputText value=#{param.id} />
通过以前的方式,我将id从a.xhtml转移到b.xhtml,但我不希望因为这一行而在外面公开像“... b.xhtml?id = 5555”这样的参数:
return "b?id=" + param;
ManagedBean的范围是请求。我该怎么做才能解决这个问题?感谢。
答案 0 :(得分:0)
如果您使用的是JSF 2或EL 2.2,则可以将其作为参数传递给方法
<h:commandLink class="navi" value="press" action="#{Bean.action(5555)}" />
答案 1 :(得分:0)
您也可以尝试 viewParam
<f:metadata>
<f:viewParam name="id" value="#{bean.id}" />
</f:metadata>
它基本上做了以下几点:
你可以在结果链接上传递id(例如b.xhtml?id = 1)并在任何Managed Bean上检索它。
答案 2 :(得分:-2)
如果你的bean是会话作用域,这很容易。
Bean.java
private String param;
public String action() {
HttpServletRequest request = (HttpServletRequest) FacesContext
.getCurrentInstance().getExternalContext().getRequest();
param = request.getParameter("id");
return "b?id=" + param;
}
public String getParam() {
return param;
}
XHTML
<h:inputText value=#{bean.param} />