JSF - faces-managed-beans-config.xml

Uma dúvida…

	<managed-bean>
		<managed-bean-name>beanExterno</managed-bean-name>
		<managed-bean-class>br.com.bradesco.web.cimg.view.bean.BeanExterno</managed-bean-class>
		<managed-bean-scope>request</managed-bean-scope>
        <managed-property>
        	<property-name>codigo</property-name>
            <value>#{param.codigo}</value>
        </managed-property>
	</managed-bean>

neste código e pego o parametro da url e passo para o meu bean

ex:

url.jsf?codigo=50

Porem seu acessar somente url.jsf, este atribui ‘’"(vazio) para o atributo do bean, pois ele não encontrou o parametro, eu gostaria de fazer um “if” ± desta forma

	<managed-bean>
		<managed-bean-name>beanExterno</managed-bean-name>
		<managed-bean-class>br.com.bradesco.web.cimg.view.bean.BeanExterno</managed-bean-class>
		<managed-bean-scope>request</managed-bean-scope>
        <if>#{param.codigo != null}</if>  
        <managed-property>
        	<property-name>codigo</property-name>
            <value>#{param.codigo}</value>
        </managed-property>
	</managed-bean>

é possivel?

Obs: estou usando JSF 1

Olha eu nunca vi nem usei da forma que você deseja fazer…

Qual a sua necessidade para esta utilização para saber se posso ajudar com alguma outra sugestão, pois interessante que isto fique na parte de Controller até para passar algum retorno tratado pelo próprio Controller.

No Controller é minha ultima opção.

Porque? Simples

Preciso pegar os parametros da url todas vez que a página é carregada , ou seja onload da pagina.

Problema:

JSF 1, só sei de 4 opções para fazer isto.

1- chamar uma funcão javascript no body onload no formulário HTML (Não posso por trabalhar com templates e outras coisa que não vem o caso)

2- mapear o arquivo onload-config , este precisa de um jar que não posso colocar na minha app

4-) construtor do MB, não posso por regras da aplicação

3- pegar os parametro no faces-managed-beans-config. este foi a melhor forma para minha aplicação…

Obs: meus managedbeans esta como request

Desta forma a página carrega com os parametros certo, porem se o usuário for na url e limpar os parametros antes de dar submit, devido a esta configuração no faces ele não mantem os dados do input, ele tentar pegar os parametro como não tem , ele zera todos os campos e no meu métodos do MB esses valores estão zerados…

Boa noite erickfm8.

Eu não me lembro de como executar lógica no faces-config além daquelas de navegação estática (from-outcome).

Não entendi bem o problema de o atributo receber “” no lugar de null, mas talvez vc possa testar o seguinte: no JSF 2, se quiser inicializar o valor de uma managed property como null vc pode usar a tag . Então ficaria dessa forma:

<managed-bean>  
    <managed-bean-name>beanExterno</managed-bean-name>  
    <managed-bean-class>br.com.bradesco.web.cimg.view.bean.BeanExterno</managed-bean-class>  
    <managed-bean-scope>request</managed-bean-scope>  
       <managed-property>  
        <property-name>codigo</property-name>  
           <value>#{param.codigo}</value>  
           <null-value/>
       </managed-property>  
</managed-bean>  

Faça o teste para ver se daria pra usar essa tag com o JSF 1.2 também. Acredito que o valor permanecerá null se não for informado parâmetro.

Até +!