2012-04-08 2 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(); 

Это также не содержит параметры запроса. То же самое касается всех лиц. Контекстные объекты, с которыми вы можете получить запросы.

Справка будет оценена по достоинству.

P.S. Я ничего не могу изменить позади? вызвать его вызванный из программы не в моей досягаемости

+0

см. http://stackoverflow.com/questions/10058852/inject-to-pass-params-to-a-cdi-named-bean-via-url-gives-jboss-error-on-netbean в основном, это неправильно подход. Дайте мне знать, если вы это выясните! Вы не можете использовать @ManagedProperty с Именованными, они несовместимы. – Thufir

+0

ohw, который помогает ... и предлагаемый вариант на самом деле не работает для меня ... – Niceone

+0

Ty Thufir за то, что указал мне на этот пост – Niceone

ответ

0

Хорошо, это сработало.

@Inject to pass params to a CDI @Named bean via URL

Это решение нужно было просто добавить еще несколько вещей, на мой сайт

<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 часть из имен

@Inject @HttpParam 
private String token; 
@Inject @HttpParam(value = "ID") 
private String id; 
Смежные вопросы