Estou utilizando o VRaptor juntamente com Ext JS e preciso preencher os formlários com requisições AJAX.
O problema disso é que o retorno utilizando JSON me traz apenas o nome do atributo, enquanto que no formulário eu preciso setar o nome do campo com o padrão [objeto].[atributo], para que assim eu possa receber o objeto montado no construtor do método.
Existe alguma forma dos atributos que serão serializados no JSON serem nomeados com o padrão [objeto].[atributo]?
vc vai ter que sobrescrever a classe do vraptor que serializa JSON (XStreamJSONSerializer) pra poder configurar o XStream (sobrescrevendo o método getXStream)
no XStream vc vai ter que adicionar um Converter que vai fazer isso que vc quer…
não é nem um pouco fácil… é bem mais fácil fazer via javascript…
qual o problema de fazer isso por javascript? não vai ficar lento… vai levar praticamente o mesmo tempo que leva pra montar o form na mão…
ou vc tá usando alguma biblioteca JS que já espera o JSON do jeito que vc falou?
de qqer forma, eu posso te mandar um código javascript que converte o json q o vraptor gera num json do jeito q vc quer, que acha?
yorgan
Então, estou utilizando Ext JS e preenchendo da seguinte maneira:
geralmente as bibliotecas JS dão a possibilidade de vc tratar o resultado da url… vc sabe quais são as options possíveis pra passar nesse this.form.load?
Theparamstopass(defaultstotheform's baseParams, or none if not defined)ParametersareencodedasstandardHTTPparametersusingExt.urlEncode.*headers:ObjectRequestheaderstosetfortheaction(defaultstotheform's default headers)*success:FunctionThecallbackthatwillbeinvokedafterasuccessfulresponse(seetopofsubmitandloadforadescriptionofwhatconstitutesasuccessfulresponse).Thefunctionispassedthefollowingparameters:oform:Ext.form.BasicFormTheformthatrequestedtheactionoaction:TheActionobjectwhichperformedtheoperation.Theactionobjectcontainsthesepropertiesofinterest:+response+result:interrogateforcustompostprocessing+type*failure:FunctionThecallbackthatwillbeinvokedafterafailedtransactionattempt.Thefunctionispassedthefollowingparameters:oform:TheExt.form.BasicFormthatrequestedtheaction.oaction:TheActionobjectwhichperformedtheoperation.Theactionobjectcontainsthesepropertiesofinterest:+failureType+response+result:interrogateforcustompostprocessing+type*scope:ObjectThescopeinwhichtocallthecallbackfunctions(Thethisreferenceforthecallbackfunctions).*clientValidation:BooleanSubmitActiononly.DetermineswhetheraForm's fields are validated in a final call to isValid prior to submission. Set to false to prevent this. If undefined, pre-submission field validation is performed.[/b]
Estou vendo que o Ext JS utiliza muitos padrões para o load de JSON.
Alguns casos ele precisa do SUCCESS, outros não, e por aí vai.
Talves o ideal seria poder serializar diretamente uma String. Tipo, o que vier nela e serializado.
Assim eu poderia criar classes para montagem desses JSON.
Lucas_Cavalcanti
bom, existe uma option chamada success…
tenta ver se vc consegue modificar o json com ela:
O problema é que ele não vai entrar no success. Ta certo que posso tratar no failure, mas ainda acho que o ideal seria poder serializar objetos no padrão do Ext JS.