簡體   English   中英

如何將JavaScript變量作為參數傳遞給JSF操作方法?

[英]How to pass JavaScript variables as parameters to JSF action method?

我正在用JavaScript准備一些變量(在我的特定情況下,我想獲取GPS位置):

function getVars() {
    // ...
    var x = locationInfo.lng; 
    var y = locationInfo.lat;
}

我想通過以下命令按鈕將它們發送到我的托管bean:

<h:commandButton value="submit" onclick="getVars()" action="#{bean.submit(x,y)}" />
public void submit(int x, int y) {
    // ...
}

如何將JavaScript中的xy變量發送到JSF托管bean操作方法?

讓JS以相同的形式將它們設置為隱藏的輸入值。

<h:form id="formId">
    <h:inputHidden id="x" value="#{bean.x}" />
    <h:inputHidden id="y" value="#{bean.y}" />
    <h:commandButton value="submit" onclick="getVars()" action="#{bean.submit}" />
</h:form>
function getVars() {
    // ...
    var x = locationInfo.lng; 
    var y = locationInfo.lat;

    document.getElementById("formId:x").value = x;
    document.getElementById("formId:y").value = y;
}

命令按鈕操作方法可以按通常方式將它們作為bean屬性進行訪問。

private int x;
private int y;

public void submit() {
    System.out.println("x: " + x);
    System.out.println("y: " + y);
    // ...
}

// Getters+setters.

一種替代方法是使用OmniFaces <o:commandScript>PrimeFaces <p:remoteCommand>代替<h:commandButton> 另請參見如何使用本機JavaScript在HTML DOM事件上調用JSF管理的bean?

如果使用PrimeFaces ,則可以使用鏈接到托管bean的隱藏輸入字段,並且可以使用javascript初始化其值,對於PrimeFaces,可以使用PF函數來訪問鏈接到該隱藏輸入的小部件變量。 :

<script type="text/javascript">
function getVars() {
    // ...
    var x = locationInfo.lng; 
    var y = locationInfo.lat;
    PF('wvx').jq.val( lat1 );
    PF('wvy').jq.val( lng1 );
}
</script>

<p:inputText type="hidden" widgetVar="wvx" value="#{bean.x}" />
<p:inputText type="hidden" widgetVar="wvy" value="#{bean.y}" />
<h:form id="formId">
<h:inputHidden id="x" value="#{bean.x}" />
<h:inputHidden id="y" value="#{bean.y}" />
<h:commandButton value="submit" onclick="getVars()" action="#{bean.submit}" />

 <script>
        function getVars() {

            var x; 
            var yt;

            x=#{bean.x};
            y=#{bean.y};
        }
    </script>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM