テスト中に、JSONデータを含むHTTP応答に「&」が含まれている場合はprimefacesが失敗し、「&」を削除すると機能します。送信するデータはURLですが、URLをエンコード形式で送信する必要がありますか?この問題は、データ(urlではない)に「amp」またはそのような文字が含まれている場合に発生しますか?その場合の最善のアプローチは何ですか。
コールバック付きのコマンドリンク
<h:form prependId="false" id="getAllTopics" style="display:none;">
<p:commandLink action="#{topicController.listAllTopics}" id="topicListAllCmdLink" value=""
oncomplete="javascript:renderTopic(xhr, status,args)" />
</h:form>
JS機能
function renderTopic(xhr,status,args){
jsonArray=[];
console.log(args.topicJSON);
jsonArray = $.parseJSON(args.topicJSON);
.....
}
Google開発者キットから応答
<partial-response><changes><update id="javax.faces.ViewState"><![CDATA[4297043168621098325:5437886159631978839]]></update><extension ln="primefaces" type="args">{"topicJSON":"[{\"topicBody\":\"http://www.youtube.com/watch?v=m3ZyU98N3Fk&feature=relmfu \",\"videoAudioUrl\":\"\",\"topicGuid\":5600,\"userGuid\":0,\"imageURL\":\"\",\"topicOwnUserName\":\"srikanth marni\",\"topicCommentList\":[],\"topicUpdateTime\":1346817736000}]"}</extension></changes></partial-response>
コンソールのエラー
Uncaught TypeError: Cannot read property 'topicJSON' of undefined circle_topic.js.jsf:150
renderTopic circle_topic.js.jsf:150
PrimeFaces.ab.oncomplete circle.jsf:175
k.complete primefaces.js.jsf:1
b.Callbacks.bv jquery.js.jsf:16
b.Callbacks.bE.fireWith jquery.js.jsf:16
bF jquery.js.jsf:23
b.ajaxTransport.send.bv