2012-04-08 80 views
1

在各個地方,他們說你應該使用@ManagedProperty來獲取請求參數。問題是我試圖從請求字符串中獲取令牌,但它始終保持爲空。JSF @ManagedProperty不起作用

的鏈接,該頁面是被稱爲是這樣的:

http://example.com/faces/Check.xhtml?token=EC-8AT450931P272300C&ID=VKEFF29XNGNJG

豆子:

@Named(value = "bean") 
@RequestScoped 
public class Bean implements Serializable { 

    @Inject 
    private AccountBean account; 
    @Inject 
    private Service web; 
    @ManagedProperty(value = "#{param.token}") 
    private String token; 
    @ManagedProperty(value = "#{param.ID}") 
    private String id; 

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

<ui:define name="content"> 
    <h:form> 
     <pou:commandButton action="#{bean.test()}" value="complete"/> 
    </h:form> 
</ui:define> 

還有其它的事情我想:

Map<String, String> e = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap(); 

這也不包含請求參數。同樣適用於所有facesContext可以請求的東西。

幫助將不勝感激。

P.S.我不能改變什麼?導致它從一個程序不叫我達到

+0

添加到我的網站

<ui:define name="content"> <h:form> <h:inputHidden value="#{bean.token}"/> <h:inputHidden value="#{bean.id}"/> <pou:commandButton action="#{bean.test()}" value="complete"/> </h:form> </ui:define> 

,並刪除了#{} param.xxx部分解決方案基本上看到http://stackoverflow.com/questions/10058852/inject-to-pass-params-to-a-cdi-named-bean-via-url-gives-jboss-error-on-netbean,這是錯誤的做法。讓我知道,如果你弄明白了!您不能使用@ManagedProperty與命名,它們不兼容。 – Thufir 2012-04-08 06:04:34

+0

哦,這有助於......並且建議的解決方案對我來說並不是真的... – Niceone 2012-04-08 11:05:25

+0

Ty Thufir將我指向該帖子 – Niceone 2012-04-08 12:10:18

回答