2017-05-09 97 views
0

我想從傳單地圖(javascript)獲取座標並將它們傳遞給我的託管bean。爲了JavaScript變量發送到我的託管bean,我用了答案here將java變量傳遞給java bean

這裏是我使用 代碼中的JSF:

<h:form id="formId"> 

     <h:inputHidden id="x" value="#{mapbean.latt}" /> 
     <h:inputHidden id="y" value="#{mapbean.longt}" /> 

     <p:remoteCommand name="myRemote" action="#{mapbean.displayLatLong()}" immediate="true" /> 
    </h:form> 

<script type="text/javascript"> 
function onClick(e) { 

    var ff = e.latlng.lat; 
      ff2= e.latlng.lng; 


    document.getElementById("formId:x").value = ff; 
    document.getElementById("formId:y").value = ff2;     
    myRemote();   

    } 

</script> 

豆子:

//.... 
public int    latt; 
public int    longt; 
public void displayLatLong(){ 

     System.out.println("x: " + latt); 
     System.out.println("y: " + longt); 

} 
//getters and setters 

我我沒有得到錯誤,但格子和longt的值始終是0. ps:格子和longt是標記的座標(單張標記) 編輯:正如Holger在他的評論中所說的,表單沒有提交,所以修改remoteCommand解決了我的問題。這裏是修改:

<p:remoteCommand name="myRemote" process="@form" actionListener="#{mapbean.displayLatLong()}" /> 
+0

人士來電'的onClick()'? – Holger

+0

它是標記上的點擊監聽器。我通過以下命令在我的bean中定義它: 'RequestContext.getCurrentInstance()。execute(「layer.on('click',onClick)」);' onClick正在工作,我通過顯示一條警告來測試它(在onClick中添加了這一行代碼:'alert(「lat/long:」+ x +「,」+ y);' – DarkSide

+0

如果調用你應該看看你的瀏覽器控制檯生成一個POST請求,我不這麼認爲,因爲你調用了remoteCommand而沒有人提交表單 – Holger

回答

0

你不需要一個窗體和所有這些東西。

<p:remoteCommand name="myRemote" partialSubmit="true" process="@this" action="#{mapbean.displayLatLong()}"/> 

function onClick() { 
    myRemote([ 
    { name: 'latt', value: e.latlng.lat }, 
    { name: 'longt', value: e.latlng.lng } 
    ]); 
}; 

,並在服務器端

Map<String, String> params = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap(); 

String latt = params.get("latt"); 
String longt = params.get("longt"); 
+0

我會試一試!但我有一個問題:在服務器端如何更新latt,longt值?我沒有完全得到params.get(「..」)角色。 由服務器端:託管bean? – DarkSide

+0

params是調用的參數列表。調用myRemote()的所有參數都可以用'params.get(「usename」)'提取出來。在此之後,你做一個'int lattval = Integer.parseInt(latt);' – Holger

+0

你的命題似乎很有趣測試..但是你的第一個評論是正確的,沒有POST方法,所以參數的值沒有發送到服務器,我會用我做的修改來更新我的帖子。 再次感謝 – DarkSide