2016-03-28 30 views
0

Mojarra'nın x-content-güvenlik politikasını kullanmak için yarattığı satır içi javascript'ten kurtulmaya çalışıyorum. Satır içi komut dosyasını devre dışı bırakan bir başlık.mojarra.ab (bu, evt, 'action', false, false, false) çağrılarını yönetemezsiniz;

Bunu yapmak için jsfajax adlı bir düğmeye bir sınıf ekledim ve temel olarak bu sınıfı kullanan öğeye onclickevent bir dinleyici ekliyorum. Sonra o olay dinleyicisinde mojarra.ab'i arıyorum. Ancak kaynak parametresi boş ve bence bu yüzden fasulyemdeki yönteme ulaşamıyorum.

HTTP isteği FORM VERİLERİ:

j_idt240:j_idt240 
javax.faces.ViewState:-xxxxxxxxxxxxxx3:xxxxxxxxxxxx7022321 
javax.faces.source: 
javax.faces.partial.event:click 
javax.faces.partial.execute:j_idt240:j_idt241 
javax.faces.behavior.event:action 
javax.faces.partial.ajax:true 



<h:commandButton styleClass="jsfajax" value="go" action="#{test.sayHi}"> 

JS:

var es = doc.getElementsByClassName('jsfajax'); 
    for(var i = 0; i < es.length; i++){ 
     myjsf(i, es); 
    } 
}); 

function myjsf(i , es){ 
    var e = es[i]; 
    e.onclick = function(evt){ 
     log(this); // outputs the button so I don't understand + jsf.ajax.request doesn't throw error 
     mojarra.ab(this,evt,'action',0,0); 
     return false; 
    } 
} 

Yani istek gönderilir ama asla eylem yöntemini ulaşır.

Ancak bunu yapar (ve kaynak btn olan): İsteğe sonunda

<h:commandButton value="go2" action="#{test.sayHi}"> 
    <f:ajax/> 
</h:commandButton> 

cevap

0

() vardır: <f:ajax> etiketi konteyner eklerken çünkü

var sendRequest = function() { 
    var ajaxEngine = new AjaxEngine(context); 
    ajaxEngine.setupArguments(args); 
    ajaxEngine.queryString = viewState; 
    ajaxEngine.context.onevent = onevent; 
    ajaxEngine.context.onerror = onerror; 
    ajaxEngine.context.sourceid = element.id; 
    ajaxEngine.context.render = args[namingContainerId + "javax.faces.partial.render"]; 
    ajaxEngine.sendRequest(); 

Öyleydi bir kimlik ekler - hangi kinda bir doğrudan form olduğunda, id: f: ajax olmadığında istekte bulunmazsa, bu nedenle istek() - içinden geçmez. Hangi jsf.ajax.request bulunamadı. O olsa herhangi bir sorun neden olabilir eğer

e.onclick = function(evt, e){ 
    this.id = this.name; 
    mojarra.ab(this,evt,'action',0,0); 
    return false; 
} 

emin değilim:

Yani bunu yaptılar. Else, sadece düğüme kimliğimi koyacağım.