2017-05-09 76 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