如何在页面加载时在后台bean中处理GET查询stringURL参数?
我已经阅读了如何使用JSF发送参数,但是如果用户在访问他们的login页面时在URL中键入他们的companyId
呢? 例如,
http://my.company.url/productName/login.faces?companyId = acme 。
现在我们这样做,有一些scriptlet代码抓取请求的值,然后在会话中设置它。 该参数从login页面开始改变其外观,因此每个客户可以有不同的login页面视图。 我们使用extjs直到切换到JSF。
有没有办法使用JSF 2或PrimeFaces?
是的,您可以使用<f:viewParam>
将请求参数设置为托pipebean属性。
<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()
。 另请参阅如何在preRenderView侦听器方法中执行导航 。
请注意,这不是特定于PrimeFaces。 这只是标准JSF的一部分。 PrimeFaces只是一个提供增强的ajax和skinnability支持的组件库。
也可以看看:
- 什么可以使用<f:元数据>,<f:viewParam>和<f:viewAction>?
- JSF 2.0中的通信 – 处理GET请求参数
url参数也可以被视为请求参数,所以你也可以通过访问
FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap()