MarcoQuadros030810 28 de set. de 2012
tenta fazer assim
public construtorDaClasse (){
HttpServletRequest request = ( HttpServletRequest ) FacesContext
. getCurrentInstance () . getExternalContext () . getRequest ();
if ( ! request . getParameter ( "PARAMETRO" ) . isEmpty ()){
seuMetodo ();
}
}
crisirado 28 de set. de 2012
Não deu certo. Por hora, coloquei a chamada ao método dentro do set do ID. Funciona, mas eu creio que isso pode gerar problemas futuros, principalmente de desempenho se o ID for reutilizado para outro fim.
INFO : Exception when handling error trying to reset the response .
com . sun . faces . mgbean . ManagedBeanCreationException : Não é possível criar instância para · a classe : consultas . meuBean .
at com . sun . faces . mgbean . BeanBuilder . newBeanInstance ( BeanBuilder . java : 193 )
at com . sun . faces . mgbean . BeanBuilder . build ( BeanBuilder . java : 102 )
at com . sun . faces . mgbean . BeanManager . createAndPush ( BeanManager . java : 409 )
at com . sun . faces . mgbean . BeanManager . create ( BeanManager . java : 269 )
at com . sun . faces . el . ManagedBeanELResolver . resolveBean ( ManagedBeanELResolver . java : 244 )
at com . sun . faces . el . ManagedBeanELResolver . getValue ( ManagedBeanELResolver . java : 116 )
at com . sun . faces . el . DemuxCompositeELResolver . _getValue ( DemuxCompositeELResolver . java : 176 )
at com . sun . faces . el . DemuxCompositeELResolver . getValue ( DemuxCompositeELResolver . java : 203 )
at com . sun . el . parser . AstIdentifier . getValue ( AstIdentifier . java : 103 )
at com . sun . el . parser . AstValue . getValue ( AstValue . java : 179 )
at com . sun . el . ValueExpressionImpl . getValue ( ValueExpressionImpl . java : 224 )
at com . sun . faces . facelets . el . TagValueExpression . getValue ( TagValueExpression . java : 109 )
at javax . faces . component . ComponentStateHelper . eval ( ComponentStateHelper . java : 194 )
at javax . faces . component . UIComponentBase . isRendered ( UIComponentBase . java : 413 )
at org . primefaces . component . menu . BaseMenuRenderer . encodeTieredMenuContent ( BaseMenuRenderer . java : 119 )
at org . primefaces . component . menu . BaseMenuRenderer . encodeTieredSubmenu ( BaseMenuRenderer . java : 184 )
at org . primefaces . component . menu . BaseMenuRenderer . encodeTieredMenuContent ( BaseMenuRenderer . java : 141 )
at org . primefaces . component . menubar . MenubarRenderer . encodeMarkup ( MenubarRenderer . java : 63 )
at org . primefaces . component . menu . BaseMenuRenderer . encodeEnd ( BaseMenuRenderer . java : 40 )
at javax . faces . component . UIComponentBase . encodeEnd ( UIComponentBase . java : 875 )
at javax . faces . component . UIComponent . encodeAll ( UIComponent . java : 1764 )
at javax . faces . render . Renderer . encodeChildren ( Renderer . java : 168 )
at javax . faces . component . UIComponentBase . encodeChildren ( UIComponentBase . java : 845 )
at javax . faces . component . UIComponent . encodeAll ( UIComponent . java : 1757 )
at javax . faces . component . UIComponent . encodeAll ( UIComponent . java : 1760 )
at javax . faces . component . UIComponent . encodeAll ( UIComponent . java : 1760 )
at com . sun . faces . application . view . FaceletViewHandlingStrategy . renderView ( FaceletViewHandlingStrategy . java : 402 )
at com . sun . faces . application . view . MultiViewHandler . renderView ( MultiViewHandler . java : 131 )
at com . sun . faces . lifecycle . RenderResponsePhase . execute ( RenderResponsePhase . java : 121 )
at com . sun . faces . lifecycle . Phase . doPhase ( Phase . java : 101 )
at com . sun . faces . lifecycle . LifecycleImpl . render ( LifecycleImpl . java : 139 )
at javax . faces . webapp . FacesServlet . service ( FacesServlet . java : 594 )
at org . apache . catalina . core . StandardWrapper . service ( StandardWrapper . java : 1550 )
at org . apache . catalina . core . StandardWrapperValve . invoke ( StandardWrapperValve . java : 281 )
at org . apache . catalina . core . StandardContextValve . invoke ( StandardContextValve . java : 175 )
at org . apache . catalina . core . StandardPipeline . doInvoke ( StandardPipeline . java : 655 )
at org . apache . catalina . core . StandardPipeline . invoke ( StandardPipeline . java : 595 )
at org . apache . catalina . core . StandardHostValve . invoke ( StandardHostValve . java : 161 )
at org . apache . catalina . connector . CoyoteAdapter . doService ( CoyoteAdapter . java : 331 )
at org . apache . catalina . connector . CoyoteAdapter . service ( CoyoteAdapter . java : 231 )
at com . sun . enterprise . v3 . services . impl . ContainerMapper $AdapterCallable . call ( ContainerMapper . java : 317 )
at com . sun . enterprise . v3 . services . impl . ContainerMapper . service ( ContainerMapper . java : 195 )
at com . sun . grizzly . http . ProcessorTask . invokeAdapter ( ProcessorTask . java : 860 )
at com . sun . grizzly . http . ProcessorTask . doProcess ( ProcessorTask . java : 757 )
at com . sun . grizzly . http . ProcessorTask . process ( ProcessorTask . java : 1056 )
at com . sun . grizzly . http . DefaultProtocolFilter . execute ( DefaultProtocolFilter . java : 229 )
at com . sun . grizzly . DefaultProtocolChain . executeProtocolFilter ( DefaultProtocolChain . java : 137 )
at com . sun . grizzly . DefaultProtocolChain . execute ( DefaultProtocolChain . java : 104 )
at com . sun . grizzly . DefaultProtocolChain . execute ( DefaultProtocolChain . java : 90 )
at com . sun . grizzly . http . HttpProtocolChain . execute ( HttpProtocolChain . java : 79 )
at com . sun . grizzly . ProtocolChainContextTask . doCall ( ProtocolChainContextTask . java : 54 )
at com . sun . grizzly . SelectionKeyContextTask . call ( SelectionKeyContextTask . java : 59 )
at com . sun . grizzly . ContextTask . run ( ContextTask . java : 71 )
at com . sun . grizzly . util . AbstractThreadPool $Worker . doWork ( AbstractThreadPool . java : 532 )
at com . sun . grizzly . util . AbstractThreadPool $Worker . run ( AbstractThreadPool . java : 513 )
at java . lang . Thread . run ( Thread . java : 679 )
Caused by : java . lang . NullPointerException
public meuBean () {
FacesContext contexto = FacesContext .getCurrentInstance () ;
HttpServletRequest request = ( HttpServletRequest ) contexto .getExternalContext () .getRequest () ;
id = Integer .valueOf ( request .getParameter ( "id" ) .toString ()) ;
if ( id > 0 ) {
teste () ;
}
}
public final void teste () {
System . out . println ( "Entrei..." );
}
Abraços.
MarcoQuadros030810 28 de set. de 2012
crisirado
Coloca a class bean ai… para facilitar
abras
rafaduka 29 de set. de 2012
Uma dúvida, porque vc precisa chamar o método atráves de parâmetros via url?
Qual tipo de situação vc utiliza isto?
crisirado 1 de out. de 2012
Olá MarcoQuadros030810, o bean não tem muito segredo, mas hoje está bem grande, então vou tentar resumir o Bean.
@ManagedBean ( name = "HistoricoPessoasBean" )
@ViewScoped
public class HistoricoPessoasBean {
private LazyDataModel < HistoricoPessoasView > historicoPessoas ;
private Integer id ;
@EJB
private HistoricoPessoasFacadeLocal HistoricoPessoasDAO ;
public HistoricoPessoasBean () {
}
@PostConstruct
void init () {
if ( id > 0 ) {
visualizarHistorico ();
} else {
buscarhistoricoPessoas ();
}
}
public void buscarhistoricoPessoas () {
// Gera lista de pessoas
}
public void visualizarHistorico () {
// busca todos os dados a partir do id recebido
}
public Integer getId () {
return id ;
}
public void setId ( Integer id ) {
this . id = id ;
init ();
}
}
Respondendo o questionamento do rafaduka. Tenho uma lista de pessoas e é possível você escolher uma pessoa da lista para ver o histórico de informações dela. Eu preciso do id dessa pessoa e quando passar para a página de visualização de histórico(outro .xhtml) trazer parte desses dados carregados, mas antes preciso realizar uma busca por esse dados. Digo parte, porque a visualização tem alguns botões que abrem alguns <p:dialog>.
Sim, eu uso o mesmo bean para isso, se por ventura houver esse questionamento. Por hora eu estou chamando no método set o método init(), mas me incomoda isso porque setters e getters pelo menos no que me passaram não pode ter chamada de funções ou outros tipos de código. Funciona, mas acho que não é o ideal.
Abraços.
rafaduka 2 de out. de 2012
Com JSF, você consegue chamar o método direto no link.
Exemplo:
<p:dataTable value= "#{historicoPessoasBean.listaPessoas}" var= "var" >
<p:column>
#{var.idPessoa}
</p:column>
<p:column>
#{var.nomePessoa}
</p:column>
<p:column>
//link para chamar seu método, sem necessidade de chamar na URL.
<p:commandLink action= "#{historicoPessoasBean.visualizarHistorico(var.idPessoa)}" />
</p:column>
</p:dataTable>
Aqui 4 maneiras de passar o atributo com JSF
crisirado 4 de out. de 2012
rafaduka,
nesse caso e nos demais exemplos todos trabalham com @SessionScoped , então os dados se mantem mesmo mudando de página. No meu caso estou usando @ViewScoped , por isso eu passo um id por URL e tento buscar todos os dados .
Mesmo assim, valeu rafaduka.
Abraços.
rafaduka 4 de out. de 2012
crisirado, é claro que perde o id, vc está navegando “orientado à páginas” com ViewScope.
(infelizmente isso é um vício dos desenvolvedores quando se trabalha com JSF)
“Navegue entre views orientada à estados e não à páginas” , vc insere a inteligência e controle nos managed beans. mais informações .
Assim continua trabalhando com ViewScope sem perder seus dados.