Boa tarde,
Estou implementando um modulo com pagamento digital, usando JSF 2.
Questão 1) No FORM preciso ter “action” para uma url externa. No JSF, como fazer isso?
A form é assim… o metodo insereCampos monta os parametros que vou passar no POST…
[code]
<h:form id=“formPagamentoDigital” prependId=“false”>
<h:commandLink action="#{retornoPagamentoDigitalBean.insereCampos()}">clique aqui para preencher os input…</h:commandLink>
<h:commandButton action="#{retornoPagamentoDigitalBean.submit()}"/>
</h:form>[/code]
Monto dinamicamente varios input hidden, que sao os parametros do pagamento da pessoa. Tenho um Map com estes parametros. Itero ele com este metodo que montei… e preencho dinamicamente ele.
private boolean criaInputHidden(String id, String valor) {
HtmlInputHidden input = new HtmlInputHidden();
input.setId(id);
input.setValue(valor);
UIComponent form = (UIComponent) fc.getViewRoot().findComponent("formPagamentoDigital");
return form.getChildren().add(input);
}
-
Como é que eu chamo o metodoInsereCampos() automaticamente depois que a form é renderizada?? Tentei chamar no construtor do managed bean, mas como a view ainda não está pronta, dá erro.
-
Veja que eu coloquei um metodo Submit. Dentro dele tem um return apontando para a url externa. Tentei assim nao deu certo. Tentei fazer um FacesContext().getExternalContext().redirect(url), mas tambem nao deu certo. Como entao fazer o SUBMIT apontando para a url externa com JSF?
Questao 2) Uma outra abordagem seria: Fazer uma pagina JSP, integrando com DWR, gerar os input hidden dinamicamente com javascript.
O form já vai ter o action, pois é um HTML, não é mais JSF.
<form name="pagamentodigital" action="https://www.pagamentodigital.com.br/checkout/pay/" method="post">
<input name="email_loja" type="hidden" value="sualoja@sualoja.com.br">
// na verdade os inputs, a quantidade e relativa, entao e dinamico...vou preencher via javascript
<input type="submit">
</form>
Esse segundo modo seria a unica solucao?
Lembrando que a aplicação inteira usa JSF, o DWR seria usando somente nesta pagina. O que acha?
Obrigado