0

ダウンロードするファイルの種類を選択する PF の selectOneRadio があります。また、onclick 属性を使用してダウンロード サーブレットを呼び出す commandButton もあります。問題は、ファイルの種類を選択してボタンをクリックすると、選択した値がまだ送信されていないことです。ダウンロードボタンをクリックしたときに、選択した値を利用できるようにする方法を探しています。

これが私のコードです:

<p:selectOneRadio id="sorType" value="#{bean.type}" layout="custom">
    <f:selectItem itemLabel="XML" itemValue="XML" />
    <f:selectItem itemLabel="XLS" itemValue="XLS" />
    <f:selectItem itemLabel="CSV" itemValue="CSV" />
</p:selectOneRadio>

<p:commandButton type="button" ajax="false" onclick="return downloadFile('#{bean.type}');" />
4

2 に答える 2

2

クライアント側で選択した値を確認する場合は、次のようにwidgetVar属性を定義する必要がありますp:selectOneRadio

<p:selectOneRadio widgetVar="widgetSorType" id="sorType" value="#{bean.type}"
    layout="custom">

    <f:selectItem itemLabel="XML" itemValue="XML" />
    <f:selectItem itemLabel="XLS" itemValue="XLS" />
    <f:selectItem itemLabel="CSV" itemValue="CSV" />
</p:selectOneRadio>

これにより、要素を簡単に見つけることができます。その後、それをさらに使用して、実際に選択された値を確認できます。それを行う方法は2つあります。

function getSelectedTypeVer1() {
    return PF('widgetSorType').getJQ().find(':checked').val() || "";
}

function getSelectedTypeVer2() {
    var inputs = PF('widgetSorType').inputs;

    for (var i = 0; i < inputs.length; i++) {
        if (inputs[i].checked) {
            return inputs[i].value;
        }
    }

    return "";
}

どちらのアプローチが適しているかを選択してください。どちらも、選択された値または何も選択されていない場合は空の文字列を返します。したがって、残っているのは、ボタンの で呼び出すことだけですonclick。たとえば、次のようになります。

<p:commandButton type="button" ajax="false"
    onclick="return downloadFile(getSelectedTypeVer1());" />

PrimeFaces 5.2 でテスト済み

于 2015-10-02T20:58:56.073 に答える