Olá,
No projeto que estou desenvolvendo, surgiu a necessidade de usar GET para obter informações sobre alguns produtos.
Pelo exemplo que veio no RESTFaces não vi nenhum que satisfaz a minha necessidade.
que é a seguinte:
1. quero passar uma url mais ou menos assim: …/produto/destalhes/id=123
2. a partir desse id, executar um metodo: Produto obterProduto(Long id){…}
3. em seguida setar em no managedBean o atributo produto para que na página de detalhes, eu possua informacões do produto de id 123.
e possivel fazer isso com RESTFACES??
caso seja, como é que eu faço?
Att. Dirceu
[quote=DirceuSobrinho]Olá,
1. quero passar uma url mais ou menos assim: …/produto/destalhes/id=123
2. a partir desse id, executar um metodo: Produto obterProduto(Long id){…}
3. em seguida setar em no managedBean o atributo produto para que na página de detalhes, eu possua informacões do produto de id 123.
[/quote]
lendo a documentação do restFaces, vi que isso é feito atraves de anotações
anotei da seguinte forma meu método:
public AnuncioVeiculoBean() {
}
@Instance("#{anuncioVeiculoBean}")
@HttpAction(value="veiculoAction", pattern="veiculo/{id}")
public String getAnuncioVeiculoById(@Param("id") long id) {
anuncioVeiculo = anuncioVeiculoDAO.retrieve(id);
return "irDetalheVeiculo";
}
e na página que faz a chamada:
<rest:link value=“veiculoAction”>
<f:param name=“date” value="#{a.id}"/>
<h:outputText value="#{a.titulo}"/>
</rest:link>
obtenho o seguinte erro:
Caused by: org.restfaces.RestFacesException: Invalid action name or view id: ‘veiculoAction’
at org.restfaces.core.RestApplication.getURL(RestApplication.java:227)
at org.restfaces.renderkit.LinkRenderer.encodeBegin(LinkRenderer.java:72)
at javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:528)
… 58 more
…
Já se eu coloco a url …/veiculo/123 -> diz -> page not found
E ae, alguem sabe o q está acontecendo?
Att. Dirceu
Conseguir usar o RESTFACES no meu projeto, no entanto, não com anotacoes, como contem nos exemplos da versão 1.3, acho q em razão das classes anotadas estarem em um arquivo .jar
sendo assim, criei um arquivo rest-faces-rules.xml
<rest-faces xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="https://restfaces.dev.java.net/schema/restfaces-1.3.xsd">
<!-- similar to @HttpAction -->
<action name="detalheVeiculo" value="#{anuncioVeiculoBean.selectAnuncioById}" pattern="veiculo/{id}">
<property param="id" value="#{anuncioVeiculoBean.paramId}"/>
</action>
...
Pagina que chama a acao detalheVeiuulo:
<h:panelGroup>
<rest:link value="detalheAdulto">
<f:param name="id" value="#{a.id}" />
<h:graphicImage border="0" height="80" width="100"
value="/arquivos/0_semfoto.jpg" rendered="${a.fotos[0] == null}" />
<h:graphicImage border="0" value="${a.fotos[0].url100x80}"
rendered="${a.fotos[0] != null}" />
</rest:link>
</h:panelGroup>
Managed Bean que possui a implementacao do método selectAnuncioById()
...
private Long paramId;
public String selectAnuncioById() {
anuncioVeiculo = anuncioVeiculoDAO.retrieve(paramId);
return "irDetalheVeiculo";
}
...
Att. Dirceu