2012-09-24 76 views
3

我有一个Spring + JSF 1.2应用程序,该应用程序在订阅后向用户发送包含链接的电子邮件。该链接包含像一个请求参数:如何从JSF 1.2中的URL获取请求参数?

www.myapp.com/register.jsf?var=1

我怎样才能得到这个请求参数在我的JSF支持bean?

+0

您可能需要共享一些代码来显示你在哪里了之前任何人都可以帮帮我。 –

回答

4

目前尚不清楚,如果你使用Spring或JSF来管理您的豆,但在标准JSF 1.2,你需要将它注册为<managed-bean>#{param.var}一个值,var是确切的请求参数名的<managed-property>

<managed-bean> 
    ... 
    <managed-property> 
     <property-name>var</property-name> 
     <value>#{param.var}</value> 
    </managed-property> 
</managed-bean> 

所以,如果你的bean有一个属性

private String var; // +setter (getter is not mandatory) 

,那么你可以访问并在@PostConstruct方法处理它:

@PostConstruct 
public void init() { 
    System.out.println("var is: " + var); 
} 

作为一个完全不同的替代方案,也可以直接从请求参数获得它:

String var = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("var"); 
// ... 
+0

感谢Alex和BalusC为你解答。 嗯,我用在我的控制器会话范围,方法getRequestParameterMap.get(“var”),但我总是得到var = NULL,我从我的构造函数调用requestParameter方法,因为它在我看来是唯一获得我的价值。但正如我所说的,当我将我的控制器转换为单例作用域时,requesteParameter会为var转换1,但我无法调用我的任何服务形成单个控制器:( –

+0

会话作用域bean的构造函数在会话开始时调用,而不是在发出HTTP请求时调用bean请求作用域 – BalusC

+0

Hi balusC,我仍然坚持这个:(当我使托管bean请求作用域时,我有相同的probeleme singeleton作用域,我只是不能调用我的任何DAO方法,我使用@Ressource调用我的服务,因为我是Spring结构。 –