如何在页面加载时处理辅助bean中的GET查询字符串URL参数?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在页面加载时处理辅助bean中的GET查询字符串URL参数?相关的知识,希望对你有一定的参考价值。
我已经阅读了如何使用JSF发送参数但是如果用户在访问登录页面时在URL中键入companyId
会怎么样?例如,
http://my.company.url/productName/login.faces?companyId=acme。
我们现在的方式是,有一些scriptlet代码可以从请求中获取值,然后在会话中设置它。该参数从登录页面开始改变其外观,因此每个客户可以具有不同的登录页面视图。在切换到JSF之前,我们正在使用extj。
有没有办法使用JSF 2或PrimeFaces?
是的,您可以使用<f:viewParam>
将请求参数设置为托管bean属性。
<f:metadata>
<f:viewParam name="companyId" value="#{bean.companyId}" />
</f:metadata>
如果需要,您可以使用<f:viewAction>
(仅限JSF 2.2+)或<f:event type="preRenderView">
调用bean操作。
<f:metadata>
<f:viewParam name="companyId" value="#{bean.companyId}" />
<f:viewAction action="#{bean.onload}" />
</f:metadata>
使用<f:viewAction>
时,您甚至可以返回导航结果。
public String onload() {
// ...
return "somepage";
}
如果还没有在JSF 2.2上,你可以使用ExternalContext#redirect()
。另见How to perform navigation in preRenderView listener method。
请注意,这不是PrimeFaces特有的。它只是标准JSF的一部分。 PrimeFaces仅仅是一个组件库,它提供增强的ajax和skinnability支持。
See also:
- What can <f:metadata>, <f:viewParam> and <f:viewAction> be used for?
- Communication in JSF 2.0 - Processing GET request parameters
url参数也可以视为请求参数,因此您也可以通过访问
FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap()
有一个实用程序库,OmniFaces开箱即用。
@Inject @Param
private String key;
@Inject @Param
private Long id;
以上是关于如何在页面加载时处理辅助bean中的GET查询字符串URL参数?的主要内容,如果未能解决你的问题,请参考以下文章
如何在与有条件呈现的内容相关联的页面加载时不初始化 bean